NaN、オブジェクト、またはプリミティブとは何ですか?
NaN - 非数
プリミティブです。いくつかの方法で確認できます。
typeof NaN
「オブジェクト」ではなく「数」を与える。
プロパティを追加すると、消えます。NaN.foo = "hi"; console.log(NaN.foo) // undefined
NaN instanceof Number
false を返します (ただし、これが数値であることはわかっているため、プリミティブでなければなりません)。
NaN がオブジェクトであることは実際には意味がありません。なぜなら、 のような式は0 / 0
結果が になる必要がありNaN
、数学演算は常にプリミティブになるからです。NaN をオブジェクトとして持つことは、偽の値として機能しないことを意味し、場合によってはそうします。
NaN
プリミティブな Number 値です。1
、2
などと同じです。
NaNは、グローバルオブジェクトのプロパティです。
NaNの初期値はNot-A-Numberです—Number.NaNの値と同じです。最近のブラウザでは、NaNは構成不可能で書き込み不可能なプロパティです。そうでない場合でも、オーバーライドしないでください。
プログラムでNaNを使用することはかなりまれです。これは、数学関数が失敗した場合(Math.sqrt(-1))、または数値を解析しようとしている関数が失敗した場合(parseInt( "blabla"))の戻り値です。