HTML5プロフェッショナル認定試験レベル2のJavaScriptのNaNに関するサンプル問題が間違っている

HTML5プロフェッショナル認定試験レベル2のJavaScriptのNaNに関するサンプル問題が間違っている

サンプル問題の間違い

公式サイトの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なので比較演算子で比較すれば良いというのは誤りではなく正しい。