NaN===NaN←これはfalse
#JavaScript
厳密等価比較演算子
===
は
厳密等価比較アルゴリズム
を使うのですが、ここでは片方がNaNなら即
false
とされています。
理由は
Math.sqrt(-4) === Math.sqrt(-9)
がtrueになってほしくないからだと思います
NaNであるかを確認したい場合は
Object.isNaN(x)
NaN同士の比較でtrueを出したい場合は
SameValueアルゴリズム
厳密等価比較とSameValueとSameValueZeroの違い
を参照の上検討してください
Wikipedia
によると……
『NaNとの大小比較では、自分自身と比較した場合でも「大小不明な結果」を返す。』
らしい。NaN絡みなら等価比較だけじゃなくて
>
や
<
もfalseを返す。
Author :
綾坂こと