Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
isNaN()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
DieisNaN()-Funktion bestimmt, ob ein WertNaN ist, und konvertiert den Wert bei Bedarf zunächst in eine Zahl. Da die Umwandlung innerhalb derisNaN()-Funktionüberraschend sein kann, bevorzugen Sie möglicherweise die Verwendung vonNumber.isNaN().
In diesem Artikel
Probieren Sie es aus
function milliseconds(x) { if (isNaN(x)) { return "Not a Number!"; } return x * 1000;}console.log(milliseconds("100F"));// Expected output: "Not a Number!"console.log(milliseconds("0.0314E+2"));// Expected output: 3140Syntax
isNaN(value)Parameter
valueDer zu testende Wert.
Rückgabewert
true, wenn der gegebene WertNaN ist, nachdem erin eine Zahl umgewandelt wurde; andernfallsfalse.
Beschreibung
isNaN() ist eine Funktions-Eigenschaft des globalen Objekts.
Für Zahlwerte prüftisNaN(), ob die Zahl der WertNaN ist. Wenn das Argument derisNaN()-Funktion nicht vom TypNumber ist, wird der Wert zuerst in eine Zahl umgewandelt, und der resultierende Wert wird dann mitNaN verglichen.
Dieses Verhalten vonisNaN() bei nicht-numerischen Argumenten kann verwirrend sein! Ein leerer String wird beispielsweise zu 0 umgewandelt, während ein boolean zu 0 oder 1 umgewandelt wird; beide Werte sind intuitiv "keine Zahlen", aber sie ergeben keinNaN, sodassisNaN()false zurückgibt. Daher beantwortetisNaN() weder die Frage "ist die Eingabe der GleitkommawertNaN" noch die Frage "ist die Eingabe keine Zahl".
Number.isNaN() ist eine zuverlässigere Möglichkeit, um zu testen, ob ein Wert der ZahlenwertNaN ist oder nicht. Alternativ kann der Ausdruckx !== x verwendet werden, und keine der Lösungen unterliegt den falsch-positiven Ergebnissen, die die globale FunktionisNaN() unzuverlässig machen. Um zu testen, ob ein Wert eine Zahl ist, verwenden Sietypeof x === "number".
DieisNaN()-Funktion beantwortet die Frage "ist die Eingabe funktional gleichwertig mitNaN, wenn sie im Zahlenkontext verwendet wird". WennisNaN(x)false zurückgibt, können Siex in einem arithmetischen Ausdruck verwenden, als ob es sich um eine gültige Zahl handelt, die nichtNaN ist. WennisNaN(x)true zurückgibt, wirdx zuNaN umgewandelt und die meisten arithmetischen Ausdrücke gebenNaN zurück (weil sichNaN fortpflanzt). Sie können dies beispielsweise verwenden, um zu testen, ob ein Argument einer Funktion arithmetisch verarbeitbar ist (nutzbar "wie" eine Zahl) und Werte zu behandeln, die nicht wie eine Zahl aussehen, indem Sie einen Fehler werfen, einen Standardwert bereitstellen usw. Auf diese Weise können Sie eine Funktion haben, die die gesamte Vielseitigkeit von JavaScript nutzt, indem sie die Werte je nach Kontext implizit konvertiert.
Hinweis:Der+ Operator führt sowohl Zahlenaddition als auch Zeichenkettenverkettung durch. Daher kann der+ Operator selbst dann, wennisNaN() für beide Operandenfalse zurückgibt, eine Zeichenkette zurückgeben, da er nicht als arithmetischer Operator verwendet wird. Zum Beispiel gibtisNaN("1")false zurück, aber"1" + 1 gibt"11" zurück. Um sicherzustellen, dass Sie mit Zahlen arbeiten,zwingen Sie den Wert in eine Zahl und verwenden SieNumber.isNaN(), um das Ergebnis zu testen.
Beispiele
Beachten Sie, wieisNaN()true für Werte zurückgibt, die nicht der WertNaN sind, aber auch keine Zahlen:
isNaN(NaN); // trueisNaN(undefined); // trueisNaN({}); // trueisNaN(true); // falseisNaN(null); // falseisNaN(37); // false// StringsisNaN("37"); // false: "37" is converted to the number 37 which is not NaNisNaN("37.37"); // false: "37.37" is converted to the number 37.37 which is not NaNisNaN("37,5"); // trueisNaN("123ABC"); // true: Number("123ABC") is NaNisNaN(""); // false: the empty string is converted to 0 which is not NaNisNaN(" "); // false: a string with spaces is converted to 0 which is not NaN// DatesisNaN(new Date()); // false; Date objects can be converted to a number (timestamp)isNaN(new Date().toString()); // true; the string representation of a Date object cannot be parsed as a number// ArraysisNaN([]); // false; the primitive representation is "", which coverts to the number 0isNaN([1]); // false; the primitive representation is "1"isNaN([1, 2]); // true; the primitive representation is "1,2", which cannot be parsed as numberSpezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-isnan-number> |