Как проверить, что значение равно NaN
Короткий ответ
NaN означает не число — результат неудачного вычисления. Проверяйте его через Number.isNaN():
const value = Number('abc');
console.log(Number.isNaN(value));Результат:
trueЛюбое настоящее число
Number.isFinite() возвращает true только для обычных чисел: не NaN и не Infinity:
console.log(Number.isFinite(42));
console.log(Number.isFinite(1 / 0));
console.log(Number.isFinite(NaN));Результат:
true
false
falseЧастая ошибка
NaN — единственное значение, которое не равно самому себе, поэтому сравнение через === никогда не срабатывает:
const value = Number('abc');
console.log(value === NaN);
console.log(isNaN('hello'), Number.isNaN('hello'));Результат:
false
true falseСтарая глобальная функция isNaN() сначала превращает аргумент в число, поэтому для строки hello возвращает true. Number.isNaN() ничего не преобразует.
Функции из этого ответа
- Number.isNaN — Проверяет, что значение — NaN, без преобразования типов.
- Number.isFinite — Проверяет, что значение — конечное число (не NaN и не Infinity).