web-dev-qa-db-ja.com

NaN === NaNが偽であるのはなぜですか?

どして NaN === NaN Javascriptでfalseを返しますか?

> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false

ドキュメントページ で私はこれを見ます:

NaNに対するテスト

等価演算子(==および===)は、NaNに対して値をテストするために使用できません。代わりにisNaNを使用してください。

質問に答える参照はありますか?大歓迎です。

52
Ionică Bizău

厳密な答え:JS仕様 そうと言っている

  • Type(x)が数値の場合、
    • XがNaNの場合、falseを返します。
    • YがNaNの場合、falseを返します。

有用な回答:浮動小数点数のIEEE 754仕様(浮動小数点のすべての言語で使用されています)は、NaNは決して等しくないことを示しています。

44
SLaks

この動作は IEEE-754標準 (この点でJavaScriptの仕様に従っています)で指定されています。

詳細な説明については、 IEEE754 NaN値に対してfalseを返すすべての比較の根拠は何ですか? を参照してください。

12
NPE

NaN===NaNには同じ値が含まれ、そのタイプはNumberですが、同じではありません。 ECMA-262によると、==または===NaNが含まれている場合、false値が返されます。

ここで詳細ルールを見つけることができます

http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.

1
Mehedi Hasan