Ответ
В JavaScript NaN (Not-a-Number) — это уникальное значение, представляющее нечисловой результат. Ключевая особенность: NaN не равно ничему, включая само себя (NaN === NaN возвращает false).
Правильные способы проверки:
-
Number.isNaN(value)(Рекомендуется). Эта функция выполняет строгую проверку: возвращаетtrueтолько если переданное значение в точности равноNaN.console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN('text' / 2)); // true (результат операции — NaN) console.log(Number.isNaN('text')); // false (строка — не NaN) console.log(Number.isNaN(123)); // false -
Object.is(value, NaN). Альтернативный метод, также корректно определяющийNaN.console.log(Object.is(NaN, NaN)); // true -
Самопроверка (
value !== value). Старый трюк, основанный на уникальностиNaN. Работает, но менее читаем.
Чего НЕ делать:
- Не используйте глобальную функцию
isNaN(). Она сначала неявно преобразует значение в число, что может дать неожиданные результаты.console.log(isNaN('123')); // false (строка преобразуется в число 123) console.log(isNaN('text')); // true (строка не преобразуется в число) console.log(isNaN(NaN)); // trueNumber.isNaN()лишена этого недостатка.