2012-05-08 8 views
5

NaN、Objectまたはプリミティブとは何ですか?JavaScript:NaN、Objectまたはプリミティブとは何ですか?

はNaN - 非数

+0

NaNはNumberクラスのプロパティです – rsplak

+1

'typeof NaN ==" number "' –

+1

NaNはNULLに似ています。 あなたは、この[SOポスト]を参照することができます[1] [1]:http://stackoverflow.com/questions/559792/what-is-the-reserved-keyword-for-nan -in-javascript –

答えて

4

NaNは、プリミティブNumber値です。 12など

1

NaNはグローバルオブジェクトのプロパティです。

NaNの初期値は、Not-A-Numberです。これは、 Number.NaNの値と同じです。最新のブラウザでは、NaNは設定不可能な の書き込み不可能なプロパティです。そうでない場合でも、 を無効にしないでください。

プログラムでNaNを使用することは、まれです。 Math関数が失敗したとき(Math.sqrt(-1))、または を解析しようとしている関数が失敗したとき(parseInt( "blabla"))、戻り値 です。

Reference

8

それは原始的です。あなたはいくつかの方法で確認することができます。

  • typeof NaNは「数」ではない与えます「オブジェクトを。」

  • プロパティを追加すると、それが消えます。 NaN.foo = "hi"; console.log(NaN.foo) // undefined

  • NaN instanceof Numberはfalseを返します(ただし、数値なので、プリミティブでなければなりません)。

0/0のような表現はNaNに帰着する必要があるためNaNで、対象となるのは、本当に意味がありません、と数学演算は常にプリミティブになります。オブジェクトとしてNaNを使用することは、それが偽の値として機能しないことを意味し、場合によってはそうします。