Назад к вопросам
Junior
124
questionbank

Как проверить, что значение является NaN?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Существует несколько способов, самый надежный - использовать функцию Number.isNaN().

  1. Number.isNaN(): Это наиболее предпочтительный способ, так как он правильно различает между NaN и другими нечисловыми значениями, которые при преобразовании к числу дают NaN (например, объекты).

    // Возвращает true только для NaN
    console.log(Number.isNaN(NaN));       // true
    console.log(Number.isNaN(undefined)); // false
    console.log(Number.isNaN({}));       // false
    console.log(Number.isNaN('abc'));    // false
    console.log(Number.isNaN(null));      // false
    console.log(Number.isNaN(0 / 0));     // true
    
  2. isNaN() (глобальная функция): Эта функция преобразует аргумент к числу перед проверкой. Из-за этого может возвращать true для значений, которые не являются NaN, но не могут быть преобразованы в число. Избегайте использования для строгой проверки на NaN.

    // Возвращает true для NaN и некоторых нечисловых значений
    console.log(isNaN(NaN));       // true
    console.log(isNaN(undefined)); // true
    console.log(isNaN({}));       // true
    console.log(isNaN('abc'));    // true
    console.log(isNaN(null));      // false
    
  3. Сравнение с самим собой: Спецификация JavaScript гласит, что NaN является единственным значением, которое не равно само себе. Этот метод надежен и работает, но Number.isNaN() более читабелен.

    // true только если значение равно NaN
    const value = NaN;
    console.log(value !== value); // true
    
    const anotherValue = 5;
    console.log(anotherValue !== anotherValue); // false
    

Рекомендуется использовать Number.isNaN() для точной проверки на NaN.