--- title: Number.isNaN() slug: Web/JavaScript/Reference/Global_Objects/Number/isNaN tags: - ECMAScript 2015 - JavaScript - Metodă - NaN - Number - isNaN translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN original_slug: Web/JavaScript/Referencje/Obiekty/Number/isNaN ---
{{JSRef}}

Metoda Number.isNaN() określa czy podany parametr ma wartość {{jsxref("NaN")}} i czy jest typu {{jsxref("Number")}}. Jest to ulepszona wersja oryginalnej, globalne funkcji {{jsxref("isNaN", "isNaN()")}}.

{{EmbedInteractiveExample("pages/js/number-isnan.html", "taller")}}

Składnia

Number.isNaN(value)

Parametry

value
Wartość, którą będziemy testować {{jsxref("NaN")}}.

Zwracana wartość

true, jeśli podana wartość jest {{jsxref("NaN")}}, a jej typem jest {{jsxref("Number")}}; w przeciwnym razie, false.

Opis

Ponieważ oba operatory porównania, {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} i {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}, dla zapytania czy {{jsxref("NaN")}} jest równe {{jsxref("NaN")}} zwracają false funkcja Number.isNaN() staje się niezbędna. Jest sytuacja wyjątkowa i nie występuje, gdy porównujemy dowolne inne wartości w języku JavaScript.

W porównaniu do funkcji globalnej {{jsxref("isNaN", "isNaN()")}}, metoda Number.isNaN() nie ma problemu z usilnym konwertowaniem parametru na liczbę. To oznacza, że można bezpiecznie przekazywać wartości, które normalnie mogłyby zostać skonwertowane na {{jsxref("NaN")}}, ale nie mają tej samej wartości co {{jsxref("NaN")}}. To również oznacza, że jedynie wartości typu {{jsxref("Number")}}, które są również {{jsxref("NaN")}}, zwrócą true.

Przykłady

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

// Gdybyśmy użyli funkcji isNaN(), te przykłady zwróciłby true
Number.isNaN('NaN');      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN('blabla');   // false

// Wszystkie zwracają false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN('37');
Number.isNaN('37.37');
Number.isNaN('');
Number.isNaN(' ');

Polyfill

Następujący przykład działa, ponieważ {{jsxref("NaN")}} jest jedyną wartością w języku JavaScript, która nie jest równa samej sobie.

Number.isNaN = Number.isNaN || function(value) {
    return value !== null && (value != value || +value != value);
}

Opis

Specification Status Comment
{{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}} {{Spec2('ESDraft')}}
{{SpecName('ES2015', '#sec-number.isnan', 'Number.isnan')}} {{Spec2('ES2015')}} Initial definition.

Kompatybilność

{{Compat("javascript.builtins.Number.isNaN")}}

Zobacz również