--- title: Number.isNaN() slug: Web/JavaScript/Reference/Global_Objects/Число/isNaN tags: - ECMAScript 2015 - JavaScript - Number - isNaN - метод translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN ---
Метод Number.isNaN()
визначає, чи є передане значення {{jsxref("NaN")}}, а його типом - {{jsxref("Число", "Number")}}. Це більш надійна версія оригіналу, глобального методу {{jsxref("isNaN", "isNaN()")}}.
Number.isNaN(value)
value
true, якщо надане значення є {{jsxref("NaN")}}, а його типом - {{jsxref("Число", "Number")}}; інакше, false.
Через те, що обидва оператори рівності, {{jsxref("Operators/Equality", "==")}} та {{jsxref("Operators/Strict_equality", "===")}}, повертають false
при перевірці, чи {{jsxref("NaN")}} дорівнює {{jsxref("NaN")}}, виникла необхідність у функції Number.isNaN()
. Ця ситуація відрізняється від усіх інших можливих порівнянь у JavaScript.
У порівнянні з глобальною функцією {{jsxref("isNaN", "isNaN()")}}, Number.isNaN()
не має проблеми з примусовим приведенням параметра до числа. Це означає, що тепер стало безпечно передавати значення, які були б перетворені на {{jsxref("NaN")}}, але, насправді, не є значеннями {{jsxref("NaN")}}. Це також означає, що лише значення числового типу, які також є {{jsxref("NaN")}}, вертають true
.
Наступний код працює, тому що NaN є єдиним значенням у JavaScript, яке не дорівнює самому собі.
Number.isNaN = Number.isNaN || function isNaN(input) { return typeof input === 'number' && input !== input; }
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(' ');
Специфікація |
---|
{{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}} |