Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. undefined

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

undefined

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

Сводка

Значение глобального свойстваundefined представляет значениеundefined. Это одно изпримитивных значений JavaScript.

Атрибуты свойстваundefined
Записываемоенет
Перечисляемоенет
Настраиваемоенет

Интерактивный пример

function test(t) {  if (t === undefined) {    return "Undefined value!";  }  return t;}let x;console.log(test(x));// Expected output: "Undefined value!"

Синтаксис

undefined

Описание

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

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

Переменная, не имеющая присвоенного значения, обладает типомundefined. Такжеundefined возвращают метод или инструкция, если переменная, участвующая в вычислениях, не имеет присвоенного значения. Функция возвращаетundefined, если она невозвращает какого-либо значения.

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

js
// печатает '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.

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

Примечание:Здесь используется оператор строгого равенства (идентичности) вместо простого оператора равенства, посколькуx == undefined также проверяет, является лиx равнымnull, в то время как оператор идентичности этого не делает.null не эквивалентенundefined. Для более подробной информации смотритеоператоры сравнения.

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

В качестве альтернативы можно использовать операторtypeof:

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

Одной из причин использования оператораtypeof может быть та, что он не выбрасывает ошибку, если переменная не была определена.

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

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

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

Третьей альтернативой является операторvoid.

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

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

Specification
ECMAScript® 2026 Language Specification
# sec-undefined

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

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp