Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, что значение равно 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).

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.