Книга: JavaScript. Подробное руководство, 6-е издание
3.4. Значения null и undefined
3.4. Значения null и undefined
Ключевое слово null
в языке JavaScript имеет специальное назначение и обычно используется для обозначения отсутствия значения. Оператор typeof
для значения null
возвращает строку «object», что говорит о том, что значение null
является специальным «пустым» объектом. Однако на практике значение null
обычно считается единственным членом собственного типа и может использоваться как признак отсутствия значения, такого как число, строка или объект. В большинстве других языков программирования имеются значения, аналогичные значению null
в JavaScript: вам они могут быть известны как null
или nil
.
В языке JavaScript имеется еще одно значение, свидетельствующее об отсутствии значения. Значение undefined
, указывающее на полное отсутствие какого-либо значения. Оно возвращается при обращении к переменной, которой никогда не присваивалось значение, а также к несуществующему свойству объекта или элементу массива. Кроме того, значение undefined
возвращается функциями, не имеющими возвращаемого значения, и присваивается параметрам функций для аргументов, которые не были переданы при вызове. Идентификатор undefined
является именем предопределенной глобальной переменной (а не ключевым словом, как null
), которая инициализирована значением undefined
. В ECMAScript 3 undefined
является переменной, доступной для чтения/записи, которой можно присвоить любое другое значение. Эта проблема была исправлена в ECMAScript 5, и в реализациях JavaScript, соответствующих этому стандарту, переменная undefined
доступна только для чтения. Оператор typeof
для значения undefined
возвращает строку «undefined», показывающую, что данное значение является единственным членом специального типа.
Несмотря на эти отличия, оба значения, null
и undefined
, являются признаком отсутствия значения и часто являются взаимозаменяемыми. Оператор равенства ==
считает их равными. (Чтобы отличать их в программе, можно использовать оператор идентичности ===
.) Оба они являются ложными значениями - в логическом контексте они интерпретируются как значение false
. Ни null
, ни undefined
не имеют каких-либо свойств или методов. На практике попытка использовать .
или []
, чтобы обратиться к свойству или методу этих значений, вызывает ошибку ТуреЕrror.
Значение undefined
можно рассматривать как признак неожиданного или ошибочного отсутствия какого-либо значения, a null
- как признак обычного или вполне ожидаемого отсутствия значения. Если в программе потребуется присвоить одно из этих значений переменной или свойству или передать одно из этих значений функции, практически всегда предпочтительнее использовать значение null
.
- Detecting Null Fields
- Null (пустой тип) и undefined (неопределенный тип)
- 3. Типы данных, значения и переменные
- 3.3. Логические значения
- 3.7. Неизменяемые простые значения и ссылки на изменяемые объекты
- Неопределённые значения
- NULL в вычислениях
- NULL в выражениях
- Выражения в значениях по умолчанию для доменов
- Значения переменных по умолчанию
- 1. Пустые значения (Empty-значения)
- 2. Неопределенные значения (Null-значения)