PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Что такое NaN и как его можно получить?

Основы языка

`NaN` (Not a Number) — специальное значение типа number, которое означает результат невалидной числовой операции.

Как получить

Number('abc');      // NaN
parseInt('x');      // NaN
0 / 0;              // NaN
Math.sqrt(-1);      // NaN
undefined + 1;      // NaN
Infinity - Infinity; // NaN

Особенности

  • NaN не равен самому себе: NaN === NaN — false.
  • typeof NaN — 'number'.
  • Любая арифметика с NaN снова даёт NaN.

Как проверять

Number.isNaN(NaN);   // true — только для настоящего NaN
Number.isNaN('abc'); // false
isNaN('abc');        // true — приводит к числу, поэтому ненадёжен
Object.is(NaN, NaN); // true

Используйте Number.isNaN: он не приводит тип. Array.prototype.includes находит NaN, а indexOf — нет.

Коротко для собеседования

NaN — число, обозначающее ошибку вычисления (Number('abc'), 0 / 0). Он не равен самому себе, поэтому проверяют через Number.isNaN или Object.is.

Другие вопросы раздела