Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Number.isNaN()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.

Die statische Methode Number.isNaN() bestimmt, ob der übergebene Wert der Zahlenwert NaN ist. Sie 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

js
Number.isNaN(value)

Parameter

value

Der Wert, der auf NaN geprüft werden soll.

Rückgabewert

Der boolesche Wert true, wenn der angegebene Wert eine Zahl mit dem Wert NaN ist. Andernfalls false.

Beschreibung

Die Funktion Number.isNaN() bietet eine einfache Möglichkeit, einen Wert auf Gleichheit mit NaN zu prüfen. Beachten Sie, dass Sie dafür weder den Operator == noch den Operator === verwenden können: Anders als bei allen anderen Wertvergleichen in JavaScript ergeben diese Vergleiche false, sobald einer der Operanden NaN ist – selbst wenn der andere Operand ebenfalls NaN ist.

Da x !== x unter allen möglichen JavaScript-Werten nur für NaN wahr ist, kann Number.isNaN(x) auch durch die Prüfung x !== x ersetzt werden. Letztere ist allerdings weniger gut lesbar.

Im Gegensatz zur globalen Funktion isNaN() wandelt die Methode Number.isNaN() den Parameter nicht zwangsweise in eine Zahl um. Daher können Sie ihr auch Werte übergeben, die bei einer Umwandlung zwar zu NaN würden, tatsächlich aber nicht mit NaN identisch sind. Das bedeutet auch, dass nur Werte vom Typ Number, die zugleich NaN sind, true zurückgeben.

Beispiele

isNaN() verwenden

js
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false

Unterschied zwischen Number.isNaN() und der globalen Funktion isNaN()

Number.isNaN() versucht nicht, den Parameter in eine Zahl umzuwandeln. Für Werte, die keine Zahlen sind, gibt die Methode daher immer false zurück. Alle folgenden Aufrufe ergeben false:

js
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(" ");

Die globale Funktion isNaN() wandelt ihren Parameter dagegen in eine Zahl um:

js
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

Spezifikation
ECMAScript® 2027 Language Specification
# sec-number.isnan

Browser-Kompatibilität

Siehe auch