シンタックス
undefined
引数
なし。
説明
特別な値で、通常変数にまだ値が設定されていないことを示すために用いられます。未定義の値を参照すると、特別な値であるundefinedが返ります。ActionScriptのコードでtypeof(undefined)は、ストリングの"undefined"を返します。undefinedタイプの値は、undefinedのみです。
Flash Player 6以前にパブリッシュされたファイルでは、undefinedを文字列に変換(String(undefined))すると、値は""(空文字列)になります。Flash Player 7以降にパブリッシュされたファイルでは、undefinedを文字列に変換(String(undefined))すると、値は文字列の"undefined"になります[*1][*2][*3]。
値undefinedは、特別な値であるnullと似ています。nullとundefinedとを等価演算子(==)で比較すると、等価とされます。しかし、nullとundefinedとを厳密な等価演算子(===)で比較すると、等価とはされません[*4]。
[訳者註*1] 原文では、undefinedの文字列への変換を、undefined.toString()で示しています。しかし、undefinedはtoString()メソッドをもちません。したがって、どのFlash Playerで調べても、undefined.toString()はundefinedを返します。これは、undefinedが文字列に変換された戻り値ではなく、undefined.toStringが存在しない結果として未定義値が返されているにすぎません。
[訳者註*2]undefinedを数値に変換(Number(undefined))すると、Flash Player 6以前では数値0、Flash Player 7以降は特別な値NaNを返します。NaNに対してどのような数値演算を行っても、結果はNaNになります。
[訳者註*3] ECMA-262仕様では、undefinedを文字列に変換すると"undefined"になり、数値に変換するとNaNを返します。Flash Player 6以前で、文字列として評価すると空文字列("")になり、数値評価が0になるのは、Flash Player 4以前との互換性を保つための仕様と考えられます。Flash Player 7から、ECMA-262への準拠が強化されました。
[訳者註*4] 厳密な等価演算子===でundefinedとnullとを比較すると、戻り値はfalseになります。nullをtypeof演算子で調べると、"null"が返されます。つまり、nullとundefinedとは厳密にはデータ型が異なるのです。
|
Player
Flash 5以降。
例
以下の例で、変数xは宣言されていません。ですから、値はundefinedです。コードの最初のパートでは、等価演算子(==)でxの値を値undefinedと比較しています。そして、得られた結果は、出力ウィンドウに表示されます。コードの2番目のパートでは、等価演算子(==)で値nullとundefinedとを比較しています。
// xは未宣言
trace ("xの値は"+x);
if (x == undefined) {
trace ("xは未定義");
} else {
trace ("xは定義済み");
}
trace ("typeof(x)は"+typeof (x));
if (null == undefined) {
trace ("nullとundefinedは等しい");
} else {
trace ("nullとundefinedは等しくない");
}
つぎのような結果が、出力ウィンドウに表示されます[*5]。
xの値はundefined
xは未定義
typeof(x)はundefined
nullとundefinedは等しい
[訳者註*5] Flash Player 7でパブリッシュした場合です。Flash Player 6以前では、出力の1行目は「xの値は」のみになります。undefinedが空文字列""に変換されるためです。
|
出典
ActionScript Language Reference(Flash MX 2004 7.2英語版)より邦訳。