【Javascript】NaNに関するまとめ。

自分用。

NaNは如何なる演算を行ってもNaN以外に変化しない。よって処理中にNaNが一度でも現れれば最終結果は常にNaNとなる。

> NaN + 1;
NaN

> NaN * 0;
NaN

> NaN - NaN;
NaN

NaNは他のどんな値とも同値にならない。またNaN同士の同地判定すら偽を返却する。

> NaN == 1;
false

> NaN === 1;
false

> NaN == NaN;
false

> NaN === NaN;
false

下記の通り、比較演算子を用いた評価もすべて偽を返却する。

> NaN > 1;
false

> NaN <= 1;
false

> NaN < NaN;
false

> NaN >= NaN;
false

NaNであることを判定したい場合はisNaN()関数を用いる。

> isNaN(NaN);
true

> isNaN({});
true

> isNaN(new Number(NaN));
true

おまけ。
NaNと併せ、特殊値扱いされている正の無限大、負の無限大も同時に判別したい場合はisFinite()関数を用いればよい。
isFinite()はNaN、及び正負の無限大以外の場合に真を返却する。

> isFinite(123);
true

> isFinite(NaN);
false

> isFinite(Infinity);
false

> isFinite(-Infinity);
false