Я написал этот ответ на другой вопрос по StackOverflow , где другой проверяет, когда NaN == null
, но затем он был отмечен как дубликат, поэтому я не хочу тратить свою работу.
Посмотрите на Сеть разработчиков Mozilla о NaN
.
Краткий ответ
Просто используйте distance || 0
, если хотите убедиться, что вы указали правильное число, или isNaN()
, чтобы проверить его.
Длинный ответ
NaN (Not-a-Number) - это странный глобальный объект в javascript, часто возвращаемый при сбое в математической операции.
Вы хотели проверить, если NaN == null
, что приводит к false
. Hovewer даже NaN == NaN
результаты с false
.
Простой способ выяснить, является ли переменная NaN
глобальной функцией isNaN()
.
Другой - x !== x
, который верен только тогда, когда х равен NaN. (спасибо, что напомнили @ Raphael-Schweikert)
Но почему короткий ответ сработал?
Давайте узнаем.
При вызове NaN == false
результат равен false
, то же самое с NaN == true
.
Где-то в спецификациях JavaScript есть запись с всегда ложными значениями, которая включает в себя:
NaN
- номер не указан
""
- пустая строка
false
- логическое значение false
null
- нулевой объект
undefined
- неопределенные переменные
0
- числовой 0, включая +0 и -0