JavaScript: null и undefined
сравниваем результат сложения null и undefined
Что даст строгое сравнение null
с null
? А undefined
c undefined
? А что, если сложить null
с undefined
и сравнить идентичные выражения?
console.log(null === null);
console.log(undefined === undefined);
console.log(null + undefined === null + undefined);
Ответ довольно прост.
Сравнение null
с null
вернет true
:
console.log(null === null); // true
Такой же результат даст и сравнение undefined
с undefined
:
console.log(undefined === undefined); // true
Теперь посмотрим, что даст сумма null
и undefined
:
console.log(null + undefined); // NaN
Результатом такого сложения будет NaN
.
NaN в JavaScript является глобальным свойством, значение которого определяет не-число (Not-A-Number).
Особенностью NaN
является то, что оно неравно ничему, включая другое значение NaN
.
Таким образом, сравнение:
console.log(null + undefined === null + undefined); // false
эквивалентно:
console.log(NaN === NaN); // false
А значит полученный результат сравнения суммы null + undefined
с таким же выражением будет соответствовать false
.
Спасибо за внимание.