Frage

Wenn ich will, das Ergebnis eines Ausdrucks testen und die Funktion zurückkehren würde NaN Wie würde ich das überprüfen?
Beispiele:
$('amount').value.toInt()!='NaN'
^ funktioniert nicht und ich nehme an, dass der zurückgegebene Wert kein String ist
$('amount').value.toInt()!=NaN
^ scheint nicht entweder und dieser scheint offensichtlich
zu arbeiten
so wie kann ich überprüfen, ob der zurückgegebene Wert keine Zahl ist?

War es hilfreich?

Lösung

Der Wert NaN ist so definiert, alles ungleich zu sein, einschließlich sich selbst. Prüft, ob ein Wert NaN mit dem isNaN() Funktion, passend genug. (ECMAScript 6 fügt einen Number.isNan() Funktion mit unterschiedlicher Semantik für nicht-Zahl Argumente, aber es ist nicht in allen Browsern noch ab 2015).

unterstützt

Es gibt zwei integrierten Eigenschaften zur Verfügung mit einem NaN Wert: die globale NaN Eigenschaft (dh window.NaN in Browsern) und Number.NaN . Es ist nicht eine Sprache Schlüsselwort. In älteren Browsern könnte die NaN Eigenschaft überschrieben, mit potentiell verwirrenden Ergebnissen, aber mit der ECMAScript 5-Norm es gemacht wurde nicht beschreibbaren .

Andere Tipps

der beste Weg, das Ergebnis der numerischen Operation gegen NaN zu überprüfen ist, auf diese Weise aproach, Beispiel:

var x  = 0;
var y  = 0;
var result = x/y;  // we know that result will be NaN value
// to test if result holds a NaN value we should use the following code :

if(result !=result){
console.log('this is an NaN value');
} 

und es gemacht wird.

Der Trick besteht darin, dass NaN kann nicht auf einen anderen Wert verglichen werden, auch mit ihm selbst (NaN! = NaN ist immer wahr, so können wir dies nutzen und vergleichen Sie führen gegen sich selbst)

Das ist JavaScript (eine gute und bizarre Sprache)

Gleichheits-Operator (== und ===) kann keinen Wert testen gegen NaN verwendet werden. Verwenden Sie Number.isNaN () oder isNaN () statt.

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
scroll top