From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/global_objects/undefined/index.html | 143 +++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/undefined/index.html (limited to 'files/ru/web/javascript/reference/global_objects/undefined') diff --git a/files/ru/web/javascript/reference/global_objects/undefined/index.html b/files/ru/web/javascript/reference/global_objects/undefined/index.html new file mode 100644 index 0000000000..adb250f4f8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/undefined/index.html @@ -0,0 +1,143 @@ +--- +title: undefined +slug: Web/JavaScript/Reference/Global_Objects/undefined +tags: + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/undefined +--- +
{{jsSidebar("Objects")}}
+ +

Сводка

+ +

Значение глобального свойства undefined представляет значение {{Glossary("Undefined", "undefined")}}. Это одно из {{Glossary("Primitive", "примитивных значений")}} JavaScript.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +
+ +

{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}

+ + + +

Синтаксис

+ +
undefined
+ +

Описание

+ +

undefined является свойством глобального объекта, то есть, это переменная в глобальной области видимости. Начальным значением undefined является примитивное значение undefined.

+ +

В современных браузерах (JavaScript 1.8.5 / Firefox 4+), undefined является ненастраиваемым и незаписываемым свойством, в соответствии со спецификацией ECMAScript 5. Даже когда это не так, избегайте его переопределения.

+ +

Переменная, не имеющая присвоенного значения, обладает типом undefined. Также undefined возвращают метод или инструкция, если переменная, участвующая в вычислениях, не имеет присвоенного значения. Функция возвращает undefined, если она не {{jsxref("Statements/return", "возвращает", "", 1)}} какого-либо значения.

+ +

Поскольку undefined не является {{jsxref("Reserved_Words", "зарезервированным словом", "", 1)}}, он может использоваться в качестве идентификатора (имени переменной) в любой области видимости, за исключением глобальной.

+ +
// печатает 'foo string'
+(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })();
+
+// печатает 'foo string'
+(function(undefined){ console.log(undefined, typeof undefined); })('foo');
+
+ +

Примеры

+ +

Пример: строгое сравнение и undefined

+ +

Вы можете использовать undefined и операторы строгого равенства или неравенства для определения того, имеет ли переменная значение. В следующем коде переменная x не определена и инструкция if вычисляется в true.

+ +
var x;
+if (x === undefined) {
+  // эти инструкции будут выполнены
+}
+else {
+  // эти инструкции не будут выполнены
+}
+
+ +
+

Обратите внимание: здесь используется оператор строгого равенства (идентичности) вместо простого оператора равенства, поскольку x == undefined также проверяет, является ли x равным null, в то время как оператор идентичности этого не делает. {{jsxref("Global_Objects/null", "null")}} не эквивалентен undefined. Для более подробной информации смотрите {{jsxref("Operators/Comparison_Operators", "операторы сравнения", "", 1)}}.

+
+ +

Пример: оператор typeof и undefined

+ +

В качестве альтернативы можно использовать оператор {{jsxref("Operators/typeof", "typeof")}}:

+ +
var x;
+if (typeof x === 'undefined') {
+  // эти инструкции будут выполнены
+}
+
+ +

Одной из причин использования оператора {{jsxref("Operators/typeof", "typeof")}} может быть та, что он не выбрасывает ошибку, если переменная не была определена.

+ +
// переменная x не была определена ранее
+if (typeof x === 'undefined') { // вычислится в true без ошибок
+  // эти инструкции будут выполнены
+}
+
+if (x === undefined) { // выкинет ReferenceError
+
+}
+
+ +

Однако, уловки такого рода должны избегаться. JavaScript является языком со статической областью видимости, так что узнать, была ли переменная определена, можно путём просмотра, была ли она определена в охватывающем контексте. Единственным исключением являет глобальная область видимости, но глобальная область видимости привязана к глобальному объекту, так что проверка существования переменной в глобальном контексте может быть осуществлена путём проверки существования свойства глобального объекта (например, используя оператор {{jsxref("Operators/in", "in")}}).

+ +

Пример: оператор void и undefined

+ +

Третьей альтернативой является оператор {{jsxref("Operators/void", "void")}}.

+ +
var x;
+if (x === void 0) {
+  // эти инструкции будут выполнены
+}
+
+// переменная y не была определена ранее
+if (y === void 0) {
+  // выкинет ReferenceError (в отличие от оператора `typeof`)
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-undefined', 'undefined')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

+ +

{{Compat("javascript.builtins.undefined")}}

+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf