Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: nan, ieee

Почему NaN !== NaN?

Вопрос проверяет понимание особенностей числовой модели JavaScript и стандарта IEEE 754.

Короткий ответ

NaN означает “не число” и по спецификации не равен ничему, включая самого себя. Это сделано для отражения ошибок вычислений, а не конкретного значения. Поэтому любое сравнение NaN через == или === возвращает false. Для проверки NaN используются специальные методы.

Длинный ответ

Поведение NaN кажется странным, но оно намеренное.

Определение

Определение: NaN — специальное числовое значение, обозначающее некорректный результат вычислений.

Почему так задумано

NaN не представляет конкретное число, а сигнализирует об ошибке:

  • деление строки на число

  • результат 0 / 0

  • некорректные математические операции

Если бы NaN === NaN было true, это могло бы скрывать ошибки в вычислениях.

Пример

const a = Number('abc');

a === a; // false

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

  • Number.isNaN(value) — рекомендуемый способ

  • глобальная isNaN() — приводит типы и может вводить в заблуждение

Number.isNaN(NaN);      // true
Number.isNaN('text');  // false

Вывод: NaN !== NaN, потому что NaN — это маркер ошибки, а не обычное значение, и сравнение с ним всегда ложно.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#nan

#ieee

Подпишись на React Developer в телеграм