Number.isNaN()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Die statische Methode Number.isNaN() bestimmt, ob der übergebene Wert der Zahlenwert NaN ist, und gibt false zurück, wenn die Eingabe nicht vom Typ Number ist. Sie ist eine robustere Version der ursprünglichen globalen Funktion isNaN().
Probieren Sie es aus
function typeOfNaN(x) {
if (Number.isNaN(x)) {
return "Number NaN";
}
if (isNaN(x)) {
return "NaN";
}
}
console.log(typeOfNaN("100F"));
// Expected output: "NaN"
console.log(typeOfNaN(NaN));
// Expected output: "Number NaN"
Syntax
Number.isNaN(value)
Parameter
Rückgabewert
Der boolesche Wert true, wenn der gegebene Wert eine Zahl mit dem Wert NaN ist. Andernfalls false.
Beschreibung
Die Funktion Number.isNaN() bietet eine bequeme Möglichkeit, auf Gleichheit mit NaN zu prüfen. Beachten Sie, dass Sie nicht auf Gleichheit mit NaN mittels der Operatoren == oder === testen können, da im Gegensatz zu allen anderen Wertvergleichen in JavaScript diese immer false ergeben, wenn ein Operand NaN ist, selbst wenn der andere Operand auch NaN ist.
Da x !== x nur für NaN unter allen möglichen JavaScript-Werten wahr ist, kann Number.isNaN(x) auch durch einen Test auf x !== x ersetzt werden, obwohl letzteres weniger lesbar ist.
Im Unterschied zur globalen Funktion isNaN() konvertiert die Methode Number.isNaN() den Parameter nicht zwangsweise zu einer Zahl. Dadurch ist es sicher, Werte zu übergeben, die normalerweise in NaN umgewandelt würden, aber nicht tatsächlich denselben Wert wie NaN haben. Das bedeutet auch, dass nur Werte vom Typ Number, die auch NaN sind, true zurückgeben.
Beispiele
>Verwendung von isNaN()
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false
Unterschied zwischen Number.isNaN() und globalem isNaN()
Number.isNaN() versucht nicht, den Parameter in eine Zahl zu konvertieren, sodass Nicht-Zahlen immer false zurückgeben. Die folgenden sind alle false:
Number.isNaN("NaN");
Number.isNaN(undefined);
Number.isNaN({});
Number.isNaN("blabla");
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");
Das globale isNaN() zwingt seinen Parameter, zu einer Zahl umgewandelt zu werden:
isNaN("NaN"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN("blabla"); // true
isNaN(true); // false, this is coerced to 1
isNaN(null); // false, this is coerced to 0
isNaN("37"); // false, this is coerced to 37
isNaN("37.37"); // false, this is coerced to 37.37
isNaN(""); // false, this is coerced to 0
isNaN(" "); // false, this is coerced to 0
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-number.isnan> |
Browser-Kompatibilität
Loading…