Sobes.tech
Назад к вопросам
Junior
89
questionbank

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

Sobes Copilot

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

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

sobes.tech AI

Используют функцию isNaN(), которая проверяет, является ли значение "Не числом" (Not-a-Number).

// Примеры использования isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, так как 'hello' не может быть приведено к числу
console.log(isNaN('123'));    // false, так как '123' может быть приведено к числу 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, так как null приводится к 0

// Проверка приведения типов в isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

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

// Примеры использования Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, не выполняет приведение к числу
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Отличие от isNaN() при нечисловых аргументах
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Сравнение NaN с самим собой или любым другим значением всегда возвращает false, за исключением случая использования Object.is().

// Особенность сравнения с NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Сравнение с помощью Object.is()
console.log(Object.is(NaN, NaN)); // true

В зависимости от задачи, может потребоваться isNaN() (если важна проверка после приведения к числу) или Number.isNaN() (для строгой проверки на NaN). Метод Number.isNaN() предпочтительнее для точной проверки, является ли конкретное значение именно NaN.