После значения null пришло время рассказать ещё об одном особом значении, иногда применяемом в JavaScript. Это значение undefined. Оно возвращается в одном из следующих случаев:
- При обращении к переменной, которая была объявлена, но не инициализирована (ей не было присвоено никакое значение)
- При обращении к свойству объекта, которое не существует
Забавно, что несмотря на то, что undefined - это не то же самое, что null, но вот этот код:
var x;
x == null; //true
говорит о том, что undefined таки равно null. То есть для оператора эквивалентности нет разницы между undefined и null. Хотя если вы сделаете вот так:
var x;
alert('x = ' + x + '\n' +
'(x == null) - это ' + (x == null));
то окажется, что х всё таки равен undefined:
Однако оператор идентичности всё расставляет на свои места, и
x === null; //false
уже вернёт false. Да, JavaScript - он такой. Забавный )))
Значение же выражения x == null возвращает true либо если в переменную было явно записано значение null, либо если она пустая (не инициализирована, то есть равна undefined).
В отличие от null, значение undefined не является зарезервированным словом JavaScript. Стандарт указывает, что всегда существует глобальная переменная undefined, начальным значением которой является undefined. То есть вы можете сделать, например, так:
undefined = 0;
это не будет ошибкой. Правда, при этом ничего не изменится (во всяком случае мои эксперименты не привели к тому, что после изменения значения undefined неинициализированные переменные стали содержать что-то другое).
Когда значение undefined используется в логическом контексте, оно преобразуется в значение false. В числовом контексте – в значение NaN, а в строковом – в строку "undefined".
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.