В 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').

Читайте также

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.