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 (ECMA-262)
The definition of 'Number.isnan' in that specification.
Living Standard
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 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

Zobacz również