Что такое 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 !== NaN
→true
Это одна из самых странных особенностей 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
.