71

Javascript でNaN === NaN返されるのはなぜですか?false

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

ドキュメントページには、次のように表示されます。

NaN に対するテスト

等値演算子 ( ==and ===) を使用して、 に対して値をテストすることはできませんNaNisNaN代わりに使用してください。

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

4

3 に答える 3

61

厳密な答え: JS 仕様にそう書かれているため:

  • Type(x) が Number の場合、
    • x が NaN の場合、false を返します。
    • y が NaN の場合、false を返します。

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

于 2013-11-13T14:10:29.023 に答える
13

この動作は、IEEE-754 標準で指定されています (この点に関しては JavaScript 仕様が準拠しています)。

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

于 2013-11-13T14:10:48.947 に答える