isNaN()

isNaN関数仕様の非常に初期のバージョン以降、数値以外の引数に対する動作は混乱を招きました。 isNaN関数の引数がNumber型でない場合、値は最初にNumberに強制変換されます。次に、結果の値をテストして、NaNであるかどうかを判断します。したがって、数値型に強制すると有効な非NaN数値(特に、強制すると数値が0または1になる空の文字列とブールプリミティブ)になる非数値の場合、「false」の戻り値は予期しないものになる可能性があります。たとえば、空の文字列は確かに「数字ではありません」。混乱は、「数値ではない」という用語が、IEEE-754浮動小数点値として表される数値に対して特定の意味を持っているという事実から生じています。この関数は、「この値は、数値に強制された場合、IEEE-754の「数値ではない」値ですか?」という質問に答えると解釈する必要があります。

ECMAScript2015には関数。 Number.isNaN(x)は、xNaNであるかどうかをテストするための信頼できる方法です。ただし、Number.isNaNを使用しても、NaNの意味は正確な数値の意味であり、「数値ではない」という意味ではありません。または、Number.isNaNがない場合、式(x != x)は、変数xNaNであるかどうか。結果は、isNaNの信頼性を低下させる誤検知の影響を受けないためです。

isNaNのポリフィルは次のようになります(ポリフィルは、NaNの固有の決して等しくない特性を利用します):

Write a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です