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.
Спасибо за внимание.
