2014-11-16 2 views
9

Warum unterstützt IE nicht die Funktion Number.isNaN? Ich kann nicht einfach isNan anstelle von Number.isNaN verwenden, weil diese Funktionen unterschiedlich sind! Zum Beispiel:Number.isNaN existiert nicht in IE

Number.isNaN("abacada") != isNaN("abacada") //false != true 

Ich muß abstrakte Zeichenfolge und Nummer und prüfe, einige var wirklich enthalten NaN (ich meine NaN-Konstante, aber nicht-a-Zahlenwert wie Strings).

someobj.someopt = "blah"/0; 
someobj.someopt2 = "blah"; 
someobj.someopt3 = 150; 
for(a in someobj) if(Number.isNaN(someobj[a])) alert('!'); 

Dieser Code sollte 1 Mal Warnung anzeigen. Aber wenn ich Number.isNaN zu isNaN ändere, wird es 2 mal alarmieren. Es gibt Unterschiede.

Kann es sein, dass es eine alternative Funktion gibt?

+0

Die aktuelle Preview Release von Internet Explorer unterstützt diese Methode, [zusammen mit vielen anderen Anzahl Einbauten] (https://status.modern.ie/numberbuiltinses6). Sie können diesen Browser zu Testzwecken unter http://remote.modern.ie auf Ihren Desktop streamen. – Sampson

+1

Microsoft Edge-Browser implementiert dies. IE 11 nicht wie aktuell. – NuclearPeon

Antwort

14

Warum unterstützt IE nicht die Funktion Number.isNaN?

Das ist eher vom Thema für Stack-Überlauf, sondern nach the MDN page for Number.isNaN, ist es nicht in jedem Standard-— es nur im Entwurf der Spezifikation für ECMAScript 6 — und Internet Explorer ist definiert nicht der einzige Browser, die nicht unterstützt es.

Kann es sein, dass es eine alternative Funktion gibt?

function myIsNaN(o) { 
    return typeof(o) === 'number' && isNaN(o); 
} 

oder wenn Sie es vorziehen:

Nicht wirklich, aber man kann man sich leicht definieren

function myIsNaN(o) { 
    return o !== o; 
} 
+3

Was ist der Unterschied zwischen dem 'isNan' hier und dem' o! == o' –

+1

@PaulS .: Kein Unterschied. Ich werde das als Alternative hinzufügen, danke. – ruakh

+0

@ruakh Erzwingt nicht [isNaN()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN) die Numerierung nicht-numerischer Werte auf Zahlen? Es ist natürlich richtig, wenn Sie beide auf ['Number.isNaN()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) verwiesen haben. – ComFreek