サンプル問題の間違い
公式サイトのJavaScriptのサンプル問題にこのような問題があった。
http://html5exam.jp/measures/lv2_1_1.html
レベル2の出題範囲「2.1.1 JavaScript文法 特殊数値(NaN)」からの出題です。
NaNについて正しいものを全て選択しなさい。
- 数値でないことを表す特殊な値である。
- ゼロでの除算やNumber.parseIntメソッドの結果が数値にならない、Math.sqrtメソッドの結果が虚数の場合にNaNになる。
- NaNであるかを調べるには、NaNと比較演算子で比較すれば良い。
- 数値ではないが、Number型である。
答え A, B, D
数値ではないのでAは確かに正しい。
Bもいずれも数値を返さないので正しい。
Dも数値ではないがNumber型であるというのもtypeof(NaN)がNumberを返すのでこれも正しい。
しかしCのNaNであるかを調べるにはNaNと比較演算子で比較すれば良いというのも実は正しいのだ。
NaNは厳密等価演算子でfalse
これが比較演算子で比較するとtrueを返すという問題であれば誤りのだがNaNは厳密等価演算子を使用することで唯一falseを返すのでNaNを判別できる。
以上によりNaN===NaNがfalseであればNaNなので比較演算子で比較すれば良いというのは誤りではなく正しい。