Оператор ===
в Javascript, по-видимому, настолько транзитивен, насколько возможно.
NaN
надежно отличается от NaN
:
>>> 0/0 === 0/0
false
>>> 0/0 !== 0/0
true
Infinity
isдостоверно равно Infinity
:
>>> 1/0 === 1/0
true
>>> 1/0 !== 1/0
false
Объекты (хэши) всегда различны:
>>> var a = {}, b = {};
>>> a === b
false
>>> a !== b
true
И поскольку оператор ===
не выполняет приведение типов, преобразование значений не выполняется.может произойти, поэтому семантика равенства / неравенства примитивных типов останется непротиворечивой (то есть не будет противоречить друг другу), несмотря на ошибки интерпретатора.