Sobes.tech
Back to questions
Junior
88
questionbank

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

Sobes Copilot

Get answers in real time

Answer from AI

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.