web-dev-qa-db-ja.com

Number.isNaNはIE

IE Number.isNaN関数をサポートしないのはなぜですか?これらの関数が異なるため、Number.isNaN 'の代わりに単純なisNanを使用できません!例:

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

文字列と数値を抽象化して確認する必要があります。一部の変数には実際にNaNが含まれています(つまり、NaN定数ですが、文字列のような数値ではありません)。

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

そのコードは1回アラートを表示する必要があります。しかし、Number.isNaNをisNaNに変更すると、2回アラートが表示されます。違いがあります。

いくつかの代替機能が存在する可能性がありますか?

15
impulsgraw

IENumber.isNaN関数をサポートしないのはなぜですか?

これはStackOverflowのトピックからはかなり外れていますが、 Number.isNaNのMDNページ によると、どの標準でも定義されておらず、ECMAScript6のドラフト仕様でのみ定義されています。InternetExplorerはそれをサポートしていないブラウザだけではありません。

いくつかの代替機能が存在する可能性がありますか?

実際にはそうではありませんが、簡単に定義できます。

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

または必要に応じて:

function myIsNaN(o) {
    return o !== o;
}
17
ruakh

「番号」なしでisNaNを使用する必要があります。このような:

for(a in someobj) if(isNaN(someobj[a])) alert('!');

これはクロムでも問題なく機能します。

詳細については、Microsoftサイトをご覧ください https://docs.Microsoft.com/en-us/scripting/javascript/reference/isnan-function-javascript

1