「NaN」より:
NaNは順序付けされない(unordered)ため、比較演算子による比較には馴染みません。NaNをNaN自身を含む他の値と比較すると、不等価演算子!=はtrue、等価演算子==はfalseを返します。
「値がNaNかを調べる」より:
NaNは、等価演算子で評価することができません。評価した結果は、以下のようになります。なお、この結果はJavaScriptでも同様です。
trace (NaN == NaN);
trace (NaN != NaN);
//出力ウィンドウの結果
false
true
図001■Flash 8でNaN同士を比較する
NaN同士が、あっさり等しくなります。これは、まずいでしょう。
ECMA-262の11.9.3「抽象的等価比較アルゴリズム」によれば、等価比較する両辺のどちらか一方でもNaNであるなら、falseを返さなければなりません。
Flash Professional 9パブリックアルファでつぎのステートメントを[ムービープレビュー]すると、以下のような警告が表示され、falseが[出力]されます。
trace(NaN == NaN);
Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN.野中訳: NaNに対する論理性を欠く比較。NaNを用いた比較はすべて、falseと評価されます。NaN != NaNだからです。
わかっているのなら、そのとおりにしてもらいたかったです、Flash 8。