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.

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

BCD tables only load in the browser

Див. також