aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/undefined
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/javascript/reference/global_objects/undefined
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/ru/web/javascript/reference/global_objects/undefined')
-rw-r--r--files/ru/web/javascript/reference/global_objects/undefined/index.html143
1 files changed, 143 insertions, 0 deletions
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
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<h2 id="Summary" name="Summary">Сводка</h2>
+
+<p>Значение глобального свойства <code><strong>undefined</strong></code> представляет значение <code>{{Glossary("Undefined", "undefined")}}</code>. Это одно из {{Glossary("Primitive", "примитивных значений")}} JavaScript.</p>
+
+<div>{{js_property_attributes(0, 0, 0)}}</div>
+
+<div></div>
+
+<p>{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}</p>
+
+<div class="hidden">
+<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">Синтаксис</h2>
+
+<pre class="syntaxbox"><code>undefined</code></pre>
+
+<h2 id="Description" name="Description">Описание</h2>
+
+<p><code>undefined</code> является свойством <em>глобального объекта</em>, то есть, это переменная в глобальной области видимости. Начальным значением <code>undefined</code> является примитивное значение <code>undefined</code>.</p>
+
+<p>В современных браузерах (JavaScript 1.8.5 / Firefox 4+), <code>undefined</code> является ненастраиваемым и незаписываемым свойством, в соответствии со спецификацией ECMAScript 5. Даже когда это не так, избегайте его переопределения.</p>
+
+<p>Переменная, не имеющая присвоенного значения, обладает типом <code>undefined</code>. Также <code>undefined</code> возвращают метод или инструкция, если переменная, участвующая в вычислениях, не имеет присвоенного значения. Функция возвращает <code>undefined</code>, если она не {{jsxref("Statements/return", "возвращает", "", 1)}} какого-либо значения.</p>
+
+<p>Поскольку <code>undefined</code> не является {{jsxref("Reserved_Words", "зарезервированным словом", "", 1)}}, он может использоваться в качестве <a href="/ru/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Variables">идентификатора</a> (имени переменной) в любой области видимости, за исключением глобальной.</p>
+
+<pre class="brush: js">// печатает 'foo string'
+(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })();
+
+// печатает 'foo string'
+(function(undefined){ console.log(undefined, typeof undefined); })('foo');
+</pre>
+
+<h2 id="Examples" name="Examples">Примеры</h2>
+
+<h3 id="Strict_equality_and_undefined" name="Strict_equality_and_undefined">Пример: строгое сравнение и <code>undefined</code></h3>
+
+<p>Вы можете использовать <code>undefined</code> и операторы строгого равенства или неравенства для определения того, имеет ли переменная значение. В следующем коде переменная <code>x</code> не определена и инструкция <code>if</code> вычисляется в <code>true</code>.</p>
+
+<pre class="brush: js">var x;
+if (x === undefined) {
+ // эти инструкции будут выполнены
+}
+else {
+ // эти инструкции не будут выполнены
+}
+</pre>
+
+<div class="note">
+<p><strong>Обратите внимание:</strong> здесь используется оператор строгого равенства (идентичности) вместо простого оператора равенства, поскольку <code>x == undefined</code> также проверяет, является ли <code>x</code> равным <code>null</code>, в то время как оператор идентичности этого не делает. {{jsxref("Global_Objects/null", "null")}} не эквивалентен <code>undefined</code>. Для более подробной информации смотрите {{jsxref("Operators/Comparison_Operators", "операторы сравнения", "", 1)}}.</p>
+</div>
+
+<h3 id="Typeof_operator_and_undefined" name="Typeof_operator_and_undefined">Пример: оператор <code>typeof</code> и <code>undefined</code></h3>
+
+<p>В качестве альтернативы можно использовать оператор {{jsxref("Operators/typeof", "typeof")}}:</p>
+
+<pre class="brush: js">var x;
+if (typeof x === 'undefined') {
+ // эти инструкции будут выполнены
+}
+</pre>
+
+<p>Одной из причин использования оператора {{jsxref("Operators/typeof", "typeof")}} может быть та, что он не выбрасывает ошибку, если переменная не была определена.</p>
+
+<pre class="brush: js">// переменная x не была определена ранее
+if (typeof x === 'undefined') { // вычислится в true без ошибок
+ // эти инструкции будут выполнены
+}
+
+if (x === undefined) { // выкинет ReferenceError
+
+}
+</pre>
+
+<p>Однако, уловки такого рода должны избегаться. JavaScript является языком со статической областью видимости, так что узнать, была ли переменная определена, можно путём просмотра, была ли она определена в охватывающем контексте. Единственным исключением являет глобальная область видимости, но глобальная область видимости привязана к глобальному объекту, так что проверка существования переменной в глобальном контексте может быть осуществлена путём проверки существования свойства <em>глобального объекта</em> (например, используя оператор {{jsxref("Operators/in", "in")}}).</p>
+
+<h3 id="Void_operator_and_undefined" name="Void_operator_and_undefined">Пример: оператор <code>void</code> и <code>undefined</code></h3>
+
+<p>Третьей альтернативой является оператор {{jsxref("Operators/void", "void")}}.</p>
+
+<pre class="brush: js">var x;
+if (x === void 0) {
+ // эти инструкции будут выполнены
+}
+
+// переменная y не была определена ранее
+if (y === void 0) {
+ // выкинет ReferenceError (в отличие от оператора `typeof`)
+}
+</pre>
+
+<h2 id="Specifications" name="Specifications">Спецификации</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Спецификация</th>
+ <th scope="col">Статус</th>
+ <th scope="col">Комментарии</th>
+ </tr>
+ <tr>
+ <td>ECMAScript 1-е издание.</td>
+ <td>Стандарт</td>
+ <td>Изначальное определение. Реализована в JavaScript 1.3.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-undefined', 'undefined')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2>
+
+<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.undefined")}}</p>
+
+<h2 id="See_also" name="See_also">Смотрите также</h2>
+
+<ul>
+ <li>{{jsxref("Global_Objects/NaN", "NaN")}}</li>
+ <li>{{jsxref("Global_Objects/null", "null")}}</li>
+</ul>