Hack Frontend Community

Что такое NaN в JavaScript?

NaN расшифровывается как Not-a-Number — "не число".
Это специальное значение в JavaScript, которое означает, что результат операции не является допустимым числом.

NaN имеет числовой тип (typeof NaN === "number"), но при этом не является числом в классическом смысле.


Когда возникает NaN

NaN появляется в следующих ситуациях:

const result1 = 0 / 0;           // NaN
const result2 = Math.sqrt(-1);   // NaN
const result3 = parseInt("abc"); // NaN
const result4 = "hello" - 5;     // NaN

Особенности NaN

  • NaN !== NaNtrue Это одна из самых странных особенностей JavaScript: NaN никогда не равен даже самому себе.
console.log(NaN === NaN); // false
  • Чтобы проверить, является ли значение NaN, нужно использовать специальные методы.

Как правильно проверять на NaN

МетодОсобенности
isNaN(value)Преобразует значение к числу, затем проверяет
Number.isNaN(value)Строгая проверка без преобразования — предпочтительнее

Пример:

isNaN("hello"); // true — потому что "hello" → NaN
Number.isNaN("hello"); // false — строка не NaN
Number.isNaN(NaN); // true

Важно:

Никогда не сравнивайте NaN с помощью ===. Используйте Number.isNaN() для точной проверки.

Вывод

  • NaN — это значение типа number, означающее невалидное числовое выражение.
  • Он не равен сам себе, что делает его особенным.
  • Для проверки используйте Number.isNaN(), а не === NaN.
  • Всегда проверяйте входные данные при математических операциях, чтобы избежать NaN.