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, == (en-US) i === (en-US), 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ść

BCD tables only load in the browser

Zobacz również