未定義変数をisNaN()関数で調べると [Edit]

パブリッシュしたSWFのFlash Playerのバージョンによって、返される値が異なります。

未定義変数(値はundefined)をisNaN()関数の引数に渡すと、Flash Player 7でパブリッシュしたときはtrue、Flash Player 6以前ではfalseが返されます。

スクリプト001■未定義変数をisNaN()関数で調べる
// xは未定義変数
trace(x); // 出力: undefined
trace(isNaN(x));

// [出力]バネルの表示
// Flash Player 7でパブリッシュ
true
// Flash Player 6以前でパブリッシュ
false

isNaN()関数は、引数を数値評価します。未定義値(undefined)を数値評価した結果は、Flash Player 7から仕様が変更されました。Flash Player 6以前では数値0に変換されていたものが、Flash Player 7からはNaNと評価されます(「ECMA-262準拠」参照)。

isNaN()関数は、数値評価がNaNのときtrueを、それ以外の場合はfalseを返します。したがって、パブリッシュしたSWFのFlash Playerのバージョンが7と6以前とで、異なる結果を返すことになったのです。

その他の記事