Я знаю только, чтобы использовать isNaN, чтобы проверить, соответствует ли значение NaN. Действительно ли она надежна?Как вы можете надежно проверить, соответствует ли значение NaN?
ответ
Свойство NaN представляет собой значение, которое не является числом. Это специальное значение возникает в результате операции, которая не может быть выполнена либо потому, что один из операндов был нечисловым (например, «abc»/4), либо потому, что результат операции не является числовым (например, попытка разделить на ноль).
Хотя это кажется достаточно простым, есть несколько несколько удивительных характеристик NaN, которые могут привести к появлению волосковных ошибок, если они не знают о них.
С одной стороны, хотя NaN означает «не число», его тип, верить этому или нет, номер:
console.log(typeof NaN === "number"); // logs "true"
Кроме того, NaN по сравнению с чем - даже сам! - ложно:
console.log(NaN === NaN); // logs "false"
Пол-надежный способ, чтобы проверить, является ли число равно NaN это с встроенной функцией IsNaN(), , но даже при использовании isNaN() is an imperfect solution.
лучшим решения будет либо использовать значение! == значение, которое будет выдавать только true, если значение равно NaN. Кроме того, ES6 предлагает новую функцию Number.isNaN(), которая отличается и более надежной, чем старая глобальная функция isNaN().
Как насчет 'typeof value ===" number "&& isNaN (value)'? – Tomalak
Это хорошее решение. – user2466202
Почему бы и нет? – GolezTrol
см. Здесь: https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN –