JavaScript метод Number.isNaN()

Определение и применение

JavaScript метод isNaN() определяет, является ли передаваемое значение NaN (англ. Not-a-Number, "не число") и возвращает логическое значение. Метод возвращает true, если передаваемое значение NaN и его тип Number, в противном случае возвращаемое значение false.

Проверьте поведение в редактируемом примере.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Number.isNaN
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
isNaN✓25✓12✓15✓15✓9✓25✓15✓14✓9✓1.5✓4.4✓9

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Number.isNaN( value );

Спецификация

ECMAScript: Number.isNaN()

Значения параметров

Number: справочные сведения
Параметр Описание
value Значение, которое будет проверяться на NaN. Обязательное значение.

Возвращаемое значение и особенности

Возвращает boolean. Только числовой NaN даёт true; строка "NaN", undefined и объект-обёртка дают false. Сравнение NaN === NaN всегда false, поэтому оно не заменяет этот метод.

Примеры, попробуйте сами

Чем Number.isNaN() отличается от глобального isNaN()

Замените NaN строкой или undefined и сравните результаты проверок.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Метод возвращает true

console.log(Number.isNaN(NaN))
console.log(Number.isNaN(Number.NaN))
console.log(Number.isNaN(0 / 0))
console.log(Number.isNaN(Infinity / Infinity))
console.log(Number.isNaN(-Infinity / Infinity))

// Метод возвращает false

console.log(Number.isNaN(Infinity))
console.log(Number.isNaN(-Infinity))
console.log(Number.isNaN(true))
console.log(Number.isNaN(null))
console.log(Number.isNaN(123))
console.log(Number.isNaN('123'))
console.log(Number.isNaN('1.23'))
console.log(Number.isNaN(''))
console.log(Number.isNaN(' '))

// Отличие метода Number.isNaN от функции isNaN()

console.log(Number.isNaN('NaN')) // false
console.log(isNaN('NaN')) // true

console.log(Number.isNaN(undefined)) // false
console.log(isNaN(undefined)) // true

console.log(Number.isNaN({})) // false
console.log(isNaN({})) // true

В качестве альтернативной проверки переменной на NaN без использования функции isNaN() вы можете воспользоваться следующей конструкцией:

Почему NaN не равен самому себе

Замените NaN строкой или undefined и сравните результаты проверок.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const x = NaN
console.log(x != x) // true
console.log(x !== x) // true