Подтвердить что ты не робот

Почему NaN === NaN ложный?

Почему NaN === NaN возвращает false в Javascript?

> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false

На странице документации я вижу следующее:

Тестирование против NaN

Оператор равенства (== и ===) не может использоваться для проверки значения против NaN. Вместо этого используйте isNaN.

Есть ли какая-либо ссылка, которая отвечает на вопрос? Было бы желательно.

4b9b3361

Ответ 1

Строгий ответ: поскольку спецификация JS говорит так:

  • Если Type (x) - Number, то
    • Если x является NaN, верните false.
    • Если y является NaN, верните false.

Полезный ответ. Спецификация IEEE 754 для чисел с плавающей запятой (которая используется всеми языками для плавающей запятой) говорит, что NaN никогда не равны.

Ответ 3

Хотя обе стороны NaN===NaN содержат одно и то же значение, а их тип Number, но они не совпадают. Согласно ECMA-262, каждая из сторон == или === содержит NaN, тогда это приведет к ложному значению.

вы можете найти здесь подробные правила -

http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3