null и undefined
чем отличаются null и undefined в JavaScript
null и undefined являются примитивными типами данных в JavaScript
Переменная, не имеющая присвоенного значения, получает тип undefined.
Null, в свою очередь - присваиваемое значение, означающее ноль или “пустоту”.
Так, при объявлении переменной без какого-либо значения, JavaScript автоматически присваивает значение undefined.
Присваивая переменной null, мы явно устанавливаем для нее “пустое” значение.
let name; // undefined
let age = null; // null
В JavaScript никогда не происходит автоматического присваивания значения null - это можно сделать только в коде.
Возвращаемый тип данных
console.log(typeof null); // object
console.log(typeof undefined); // undefined
Мы видим, что для null тип данных - объект, а для undefined - undefined.
Абстрактное (равенсто) и строгое (идентичность) сравнение
При строгом сравнении ===
этих типов данных мы получаем false:
console.log(null === undefined); // false
console.log(null == undefined); // true
А при абстрактном сравнении ==
результатом будет true.
Так что, можно сказать, что JavaScript считает null и undefined равными (так как эти типы данных означают “пустоту”), но не идентичными.
if (name == null){
// код
}
if (name === undefined){
// код
}
Мы видим, что, если нужно проверить значение - равно ли оно одновременно null и undefined, достаточно использовать абстрактное сравнение ==
с любым из этих примитивных типов данных. В каждом из случаев вернется один и тот же результат.
Спасибо за внимание.