NaN の値は、算術演算の結果が未定義または表現不可能な値となった時に生成されます。こうした値が常にオーバーフロー状態を表現するとは限りません。NaN はプリミティブな数値が利用不可能といった、非数値を数値へと型強制した結果として生成されることもあります。 例えば、ゼロをゼロで除算した場合の結果は NaN になりますが、その他の数をゼロで除算した場合は異なります。 isNaN 関数の定義はごく初期のバージョン以降、数値ではない引数における振る舞いが分かりにくいものとなっていました。 isNaN 関数の引数が数値型ではない場合、その値はまず数へと型強制されます。その結果の値はその後 NaN かどうかがテストされます。このようにして、数値型に型強制される際に結果が NaN ではない数値となる非数値 (とりわけ型強制されると 0 や 1 の値になる空文字列や論理値プリミティブ) に対しては、予想
![isNaN() - JavaScript | MDN](https://cdn-ak-scissors.b.st-hatena.com/image/square/aa767575b4232d312d2c5de428f0bf0955805e26/height=288;version=1;width=512/https%3A%2F%2Fdeveloper.mozilla.org%2Fmdn-social-share.cd6c4a5a.png)