В JavaScript, если переменная была объявлена, но ей не было присвоено значение, ей автоматически присваивается значение undefined. Поэтому, если вы попытаетесь отобразить значение такой переменной, будет отображаться слово «undefined». А null — это специальное значение присваивания, которое может быть присвоено переменной как представление без значения.
Проще говоря, значение null означает отсутствие значения, а undefined означает переменную, которая была объявлена, но еще не имеет значения.
Чтобы проверить, является ли переменная undefined или null, вы можете использовать оператор равенства == или оператор строгого равенства === (также называемый оператором идентичности). Давайте посмотрим на следующий пример:
<script>
var firstName;
var lastName = null;
// Попробуйте получить несуществующий элемент DOM
var comment = document.getElementById('comment');
console.log(firstName); // Печатает: undefined
console.log(lastName); // Печатает: null
console.log(comment); // Печатает: null
console.log(typeof firstName); // Печатает: undefined
console.log(typeof lastName); // Печатает: object
console.log(typeof comment); // Печатает: object
console.log(null == undefined) // Печатает: true
console.log(null === undefined) // Печатает: false
/* Поскольку null == undefined истинно, следующие операторы будут перехватывать как null, так и undefined */
if(firstName == null){
alert('Variable "firstName" is undefined.');
}
if(lastName == null){
alert('Variable "lastName" is null.');
}
/* Поскольку null === undefined ложно, следующие операторы будут перехватывать только null или undefined */
if(typeof comment === 'undefined') {
alert('Variable "comment" is undefined.');
} else if(comment === null){
alert('Variable "comment" is null.');
}
</script>
Если вы попытаетесь проверить значения null с помощью оператора typeof, он не будет работать должным образом, потому что JavaScript возвращает «объект» для typeof null вместо «null».
Это давняя ошибка в JavaScript, но поскольку много кода в сети написано вокруг этого поведения, и, таким образом, его исправление создало бы намного больше проблем, от идеи исправления этой проблемы отказался комитет, разрабатывающий и поддерживающий JavaScript.
Ключевое слово undefined в JavaScript не является зарезервированным, поэтому можно объявить переменную с именем undefined. Итак, правильный способ проверить неопределенную переменную или свойство — использовать оператор typeof, например: if(typeof myVar === 'undefined').

















