Number.isNaN()

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

Składnia

Number.isNaN(value)

Parametry

value
Wartość, którą będziemy testować NaN.

Zwracana wartość

true, jeśli podana wartość jest NaN, a jej typem jest Number; w przeciwnym razie, false.

Opis

Ponieważ oba operatory porównania, == i ===, dla zapytania czy NaN jest równe 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 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 NaN, ale nie mają tej samej wartości co NaN. To również oznacza, że jedynie wartości typu Number, które są również 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ż 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
ECMAScript Latest Draft (ECMA-262)
The definition of 'Number.isnan' in that specification.
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Number.isnan' in that specification.
Standard Initial definition.

Kompatybilność

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 YesSafari Full support 9WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 15Opera Android Full support YesSafari iOS Full support 9Samsung Internet Android Full support Yesnodejs Full support 0.10

Legend

Full support  
Full support
No support  
No support

Zobacz również