Number.isNaN()

Метод Number.isNaN() визначає, чи є передане значення NaN, а його типом - Number. Це більш надійна версія оригіналу, глобального методу isNaN().

Синтаксис

Number.isNaN(value)

Параметри

value
Значення, що перевірятиметься на NaN.

Значення, що повертається

true, якщо надане значення є NaN, а його типом - Number; інакше, false.

Опис

Через те, що обидва оператори рівності, == та ===, повертають false при перевірці, чи NaN дорівнює NaN, виникла необхідність у функції Number.isNaN(). Ця ситуація відрізняється від усіх інших можливих порівнянь у JavaScript.

У порівнянні з глобальною функцією isNaN(), Number.isNaN() не має проблеми з примусовим приведенням параметра до числа. Це означає, що тепер стало безпечно передавати значення, які були б перетворені на NaN, але, насправді, не є значеннями NaN. Це також означає, що лише значення числового типу, які також є NaN, вертають true.

Поліфіл

Наступний код працює, тому що NaN є єдиним значенням у JavaScript, яке не дорівнює самому собі.

Number.isNaN = Number.isNaN || function isNaN(input) {
    return typeof input === 'number' && input !== input;
}

Приклади

Використання isNaN

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0);      // true

// наприклад, це дорівнювало б true у глобальному методі isNaN()
Number.isNaN('NaN');      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN('ляля');     // false

// Це все вертає false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN('37');
Number.isNaN('37.37');
Number.isNaN('');
Number.isNaN(' ');

Специфікації

Специфікація
ECMAScript (ECMA-262)
The definition of 'Number.isnan' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isNaNChrome Full support 25Edge Full support 12Firefox Full support 15IE No support NoOpera Full support 15Safari Full support 9WebView Android Full support ≤37Chrome Android Full support 25Firefox Android Full support 15Opera Android Full support 14Safari iOS Full support 9Samsung Internet Android Full support 1.5nodejs Full support 0.10

Legend

Full support  
Full support
No support  
No support

Див. також