2016-07-06 3 views
3

さて、私は3ヶ月間Javascriptを学んでいて、いくつかのタスクを解決するのにかなり良い露出を得ています。彼らがNaNの例を持っていますが、それらは通常NaNが便利で、どんな状況にあるのですか

NaN === NaN;  // false 
Number.NaN === NaN; // false 
isNaN(NaN);   // true 
isNaN(Number.NaN); // true 

のようなものを必要とする私の本の冒頭で私も他のstackoverflowの記事で見てきたと私はまだ私はそれを使用することができる場所のシナリオが表示されません。それは言われています、この世界的な財産はどのような状況で私を助けますか?実際のプログラムでは何が実用的な状況ですか?

+0

をあなたはNaNをSQLの 'null'と比較することができます。 「不明」の値、またはエラーが発生しました。 NaN値NaN自体を使って他の何かを作るという点で毒です。 'var foo = 1 + NaN'は結果として' NaN'を返します。 '1'ではありません。エラーが発生すると、その時点で結果が未定義になるため、その悪い値を続行したくないということです。 SQL NULLとまったく同じように、特殊なツールを使用してそれを検出する必要があります。 'isNaN()' v.s. SQLの 'is null'です。 –

+0

'var helloWorld = 'hello world'; isNaN(helloWorld - 1) '単純なものです。 –

+0

通常、未知のソース(ユーザー、データベース、APIなど)の変数を使用している場合は、必要な数学に移動する前に、結果が数字であることを確認するのに役立ちますその値。 – Jack

答えて

1

NaNは意味をなさない数学の操作で得られる値である:あなたには、いくつかの数学opertionを行うと、いくつかのオペランドがNaNとき

Number('abc'); // NaN 
0/0;   // NaN 
Math.sqrt(-1); // NaN 
Math.log(-1); // NaN 
Math.asin(2); // NaN 

、それが結果に反映されます:

NaN + 2;   // NaN 
NaN * 0;   // NaN 
1/NaN;   // NaN 
Math.pow(NaN, 2); // NaN 
-1

NaNは、数字ではない(しかし、そうであったはずの)値がある場合に最も便利です。あなただけparseInt特に、いくつかの場所での標準APIから戻ってNaNを取得します:

のparseInt関数は、文字列に最初の引数を変換し、それを解析して、整数またはNaNを返します。ここでの値の多く

NaNは、数学演算子のチェーンに導入された後、操作をします(彼らはこのようにNaNを生産、最初のオペランドとの意味を成していないだろう場合でも)が定義されていることです続けてNaNを返します。ほとんどの数学演算子は、the / instructionsから見ることができるように、どちらかのオペランドがすでに数字でない場合は、すぐにNaNを返す節を持っています。

+0

何かが数字であることをどのように正確に考えていますか?それがどうやって動くのか不思議です。 –

+0

@Jackは、質問のコメント、ユーザー入力(またはサーバー入力、または実際には外部ソース)に記載されています。 'NaN'は、無効な出力を受け取ったときに有効な一連の操作を保持するために存在します。誤って入力が誤って 'x/0'を作ったために投げるのではなく、' x/NaN'と定義された(ガベージであれば)出力が得られます。 – ssube

+0

@cresjoy 'Math.sqrt(-1)'は、数値を与えるために意図された他の多くの "無効な"数学演算と同様に、 'NaN'を生成します。 –

関連する問題