null != null 🥹

Чем больше погружаешься в специфику JavaScript, тем логичнее кажется, что null != null должно давать true: «не равно», два «ничего», разве одно отсутствие значения равно другому? По факту выходит false. По спецификации так и должно быть.

В ECMAScript оператор == задан операцией IsLooselyEqual (7.2.13). Если типы у двух значений одинаковые, то для == используется тот же результат, что и для строгого равенства (IsStrictlyEqual, 7.2.14). Для null с null тип один, значит возвращается то же, что у null === null. А null === null по спецификации даёт true: в SameValueNonNumber (7.2.11) для null и undefined сразу возвращается true.

🌱 Тогда null == null даёт true, а null != null, как отрицание ==, даёт false.

Интуиция «два ничего - не равны» понятна, но в JS оба значения одного типа Null и по правилам равенства считаются равными. #js

null != null 🥹 | Сетка — социальная сеть от hh.ru