2014-11-16 11 views
9

Dlaczego IE nie obsługuje funkcji Number.isNaN? Nie mogę użyć simple isNan zamiast Number.isNaN, ponieważ te funkcje są różne! Na przykład:Numer.isNaN nie istnieje w IE

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

muszę abstrakcyjnego ciąg i numer i sprawdzić, czy rzeczywiście zawiera pewne var NaN (mam na myśli NaN stała, ale wartość nie jest liczbą jak struny).

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

Ten kod powinien wyświetlać alert przez 1 godzinę. Ale jeśli zmienię Number.isNaN na isNaN, ostrzeże to 2 razy. Są różnice.

Być może istnieje funkcja alternatywna?

+0

Obecny Preview Release Internet Explorer obsługuje tej metody, [wraz z wieloma inna liczba budowanych-in] (https://status.modern.ie/numberbuiltinses6). Możesz przesyłać strumieniowo tę przeglądarkę na pulpit do testów na http://remote.modern.ie. – Sampson

+1

Przeglądarka krawędzi firmy Microsoft implementuje to. IE 11 nie jest obecnie. – NuclearPeon

Odpowiedz

14

Dlaczego IE nie obsługuje Number.isNaN funkcję ?

To raczej nie na temat na przepełnienie stosu, ale według the MDN page for Number.isNaN, to nie jest zdefiniowane w dowolnym standardowym — to tylko w projekcie spec ECMAScript 6 — i Internet Explorer nie jest jedyną przeglądarką, która nie obsługuje to.

Być może istnieje funkcja alternatywna?

Nie bardzo, ale łatwo można określić jednego:

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

lub jeśli wolisz:

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

Jaka jest różnica między 'isNan' tutaj i robienie' o! == o' –

+1

@PaulS .: Bez różnicy. Dodam, że jako alternatywę, dzięki. – ruakh

+0

@ruakh Czy [isNaN()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN) nie wymusza na liczbach wymuszenia wartości nienumerycznych? Jest to oczywiście prawdą, jeśli obaj odnosili się Państwo do ['Number.isNaN()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN). – ComFreek