549 Stimmen

Wie überprüft man in JavaScript, ob eine Zahl NaN ist?

Ich habe es nur in der JavaScript-Konsole von Firefox versucht, aber keine der folgenden Anweisungen gibt true zurück:

parseFloat('geoff') == NaN;

parseFloat('geoff') == Number.NaN;

732voto

chiborg Punkte 25033

Probieren Sie diesen Code aus:

isNaN(parseFloat("geoff"))

Zur Überprüfung, ob cualquier Wert ist NaN, statt nur Zahlen, siehe hier: Wie testet man auf NaN in Javascript?

179voto

Jazzy Punkte 5804

Ich bin gerade auf diese Technik in dem Buch Wirksames JavaScript das ist ziemlich einfach:

Da NaN der einzige JavaScript-Wert ist, der als ungleich zu sich selbst behandelt wird, können Sie immer testen, ob ein Wert NaN ist, indem Sie ihn auf Gleichheit mit sich selbst überprüfen:

var a = NaN;
a !== a; // true 

var b = "foo";
b !== b; // false 

var c = undefined; 
c !== c; // false

var d = {};
d !== d; // false

var e = { valueOf: "foo" }; 
e !== e; // false

Ich habe das erst bemerkt, als @allsyed einen Kommentar abgab, aber das steht in der ECMA-Spezifikation: https://tc39.github.io/ecma262/#sec-isnan-number

64voto

rahul Punkte 179143

Verwenden Sie diesen Code:

isNaN('geoff');

Siehe isNaN() Dokumente auf MDN .

alert ( isNaN('abcd'));  // alerts true
alert ( isNaN('2.0'));  // alerts false
alert ( isNaN(2.0));  // alerts false

52voto

dopeddude Punkte 4453

Soweit ein Wert vom Typ Nummer ist zu prüfen, ob es sich um eine NaN oder nicht, die globale Funktion isNaN wird die Arbeit machen

isNaN(any-Number);

Für einen generischen Ansatz, der für alle Typen in JS funktioniert, können wir eine der folgenden Möglichkeiten verwenden:

Für ECMAScript-5-Benutzer:

#1
if(x !== x) {
    console.info('x is NaN.');
}
else {
    console.info('x is NOT a NaN.');
}

Für Benutzer von ECMAScript-6:

#2
Number.isNaN(x);

Und für Konsistenz Zweck über ECMAScript 5 & 6 beide, können wir auch diese verwenden Polyfill für Number.isNan

#3
//Polyfill from MDN
Number.isNaN = Number.isNaN || function(value) {
    return typeof value === "number" && isNaN(value);
}
// Or
Number.isNaN = Number.isNaN || function(value) {     
    return value !== value;
}

bitte prüfen Diese Antwort für weitere Einzelheiten.

20voto

Jerome WAGNER Punkte 21039

Sie sollten die globale isNaN(value) Funktionsaufruf, denn:

  • Es wird browserübergreifend unterstützt
  • Siehe isNaN zur Dokumentation

Beispiele:

 isNaN('geoff'); // true
 isNaN('3'); // false

Ich hoffe, dies hilft Ihnen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X