ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript NaN と Infinity の特別な値 [翻訳]_javascript のヒント

JavaScript NaN と Infinity の特別な値 [翻訳]_javascript のヒント

WBOY
WBOYオリジナル
2016-05-16 17:49:491359ブラウズ
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 に変換):

コードをコピー

コードも返します > Number("xyz") 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 関数を作成すると、上記の問題は発生しません:



コードをコピー
コード function myIsNaN( x) { return x !== x; }

現在は isNaN メソッドの改訂版ですNumber.isNaN() は ECMAScript 6 に追加されました (翻訳者注: Firefox はすでに実装しています)。Crockford によって実装されたこのメソッドは、上記の myIsNaN よりも理解しやすいです。



コードをコピーします
コードは次のとおりです: Number.isNaN = function (value) { return typeof value == = 'number' && isNaN(value);


2.Infinity

0 を除数として使用すると、別の値が生成されます。特別な値 Infinity:


コードをコピーします

コードは次のとおりです。 > 3/ 0 無限大
正の無限大か負の無限大かを単純に推測することはできません 無限大の計算結果:



コードをコピー

コードは次のとおりです: >Infinity - Infinity NaN
無限大より大きい値は無限大のままです:




コードをコピー

コードは次のとおりです:

>インフィニティ インフィニティ
インフィニティ> 5 * Infinity
Infinity


3. 参考

JavaScript の {} {} とは何ですか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。