1.NaN
JavaScript では、NaN は「非数値」を表します。この値は主に、文字列の解析中にエラーが発生した場合に返されます:
> Number("xyz")
NaNNaN
の名前は「数値ではありません」ですが、数値ではないとも言えます:
> NaN !== NaN
true
タイプは "数値" です。 🎜>
> typeof NaN
'number'
1.1 NaN の検出
JavaScript では、NaN は待機したくない唯一の値であるため、等号演算子を使用して決定することはできません。値が NaN かどうかを確認しますが、これを行うためのグローバル関数 isNaN() があります。
Kit Cambridge
は、
isNaN()
の問題を指摘しました。パラメータが暗黙的に数値に変換されるため、パラメータが文字列に変換できない場合でも、 true (NaN に変換):
コードをコピー
> isNaN("xyz")
true
同じため その理由は、isNaN が他の多くのオブジェクトに対しても true を返すためです:
コードをコピー
> isNaN({})
true
> Number(["xzy"]) )
NaN
> isNaN(["xzy"])
true
valueOf メソッドをオーバーライドする同じカスタム オブジェクト:
コードをコピーします
コードは次のとおりです: > var obj = { valueOf: function () { return NaN } }; 🎜>> Number(obj) NaN
> isNaN(obj)
true
したがって、(x ! == x) 不等式を使用して独自の isNaN 関数を作成すると、上記の問題は発生しません:
コードをコピー
現在は isNaN メソッドの改訂版ですNumber.isNaN() は ECMAScript 6 に追加されました (翻訳者注: Firefox はすでに実装しています)。Crockford によって実装されたこのメソッドは、上記の myIsNaN よりも理解しやすいです。
コードをコピーします
2.Infinity
0 を除数として使用すると、別の値が生成されます。特別な値 Infinity:
コードをコピーします
正の無限大か負の無限大かを単純に推測することはできません 無限大の計算結果:
コードをコピー
無限大より大きい値は無限大のままです:
コードをコピー