8

式の結果をテストしたいのですが、関数が NaN を返す場合、どのように確認すればよいでしょうか?
例:
$('amount').value.toInt()!='NaN'
^ は機能せず、返された値が文字列ではないと想定してい
$('amount').value.toInt()!=NaN
ます

4

3 に答える 3

36

NaN 値は、それ自体を含むすべてのものと等しくないと定義されています。関数で値が NaN かどうかをテストしますisNaN()。(ECMAScript 6 では、Number.isNan()数値以外の引数に対して異なるセマンティクスを持つ関数が追加されていますが、2015 年の時点ではまだすべてのブラウザーでサポートされているわけではありません)。

NaN 値で使用できる組み込みプロパティが 2 つあります。グローバルNaNプロパティ (window.NaNブラウザ内) とNumber.NaNです。これは言語キーワードではありません。古いブラウザーでは、NaNプロパティが上書きされる可能性があり、紛らわしい結果になる可能性がありましたが、ECMAScript 5 標準では書き込み不可になりました

  • @some がコメントで指摘したように、便利なグローバル関数isFinite()もあります。
于 2009-02-18T04:04:13.417 に答える
2

NaN に対する数値演算の結果をチェックする最良の方法は、この方法でアプローチすることです。例:

var x  = 0;
var y  = 0;
var result = x/y;  // we know that result will be NaN value
// to test if result holds a NaN value we should use the following code :

if(result !=result){
console.log('this is an NaN value');
} 

そしてそれは完了です。

秘訣は、NaN はそれ自身であっても他の値と比較できないことです (NaN !=NaN は常に true であるため、これを利用して結果をそれ自体と比較できます)。

これは JavaScript (良い奇妙な言語) です。

于 2014-09-23T15:58:05.940 に答える