Не является ли blabla
действительно не числом
NaN
является числом (несмотря на то, что его название является аббревиатурой от "не числа").isNaN()
проверяет, является ли число, которое вы передаете, NaN
.
"blabla"
не NaN
.Этого не может быть, потому что "blabla"
вовсе не число.Вот почему isNaN("blabla")
возвращение true
считается ложноположительным.
Если мы будем использовать его имя, isNaN
должно возвращать true
только если аргумент
- - это число, а
- имеет специальное значение
NaN
.
Вместо этого оно сначала неявно приводит любое нечисловое значение к числу, а затем проверяет результат.Вот как мы в итоге получаем, что isNaN({})
будет true
, а isNaN([])
будет false
.
Конечно, если вы думаете о isNaN(x)
как " будет x
, когдаконвертируется в число, в результате получается NaN
?", тогда это не ложное срабатывание.Но это не то, чего ожидает большинство людей.