アクセシビリティ

Flash TechNote

左辺にある Eval() が正常動作しない

問題
Macromedia Flash MX において、以下のように eval() を使用して引数の左辺および右辺を動的に適用させようとするとエラーが生成されます。

eval ("TextField" + i) = array[i];

Macromedia Flash 5 において正常動作したいた上記のコードは出力ウィンドウで以下のようなエラーを表示するようになります。

代入演算子の左側は、変数またはプロパティでなければなりません。


理由
Macromedia Flash 5 では使用できたコードではありますが、実際には ECMA-262 に準拠しているものではありませんでした。Macromedia Flash MX では完全に ECMA-262 に準拠することになり、この記述方法の使用はできなくなりました。


回避策
上記のコードにある eval() をキーワード this を使用して以下のように書き換えます。

this["TextField"+i] = array[i];

このコードは Macromedia Flash 5 および Flash MX の両方において ECMA-262 に沿って使用できます。

Note: このコードを使用して作成された Flash 5 SWF ファイルは Macromedia Flash Player 6 で正常に再生されます。


追加情報
このテクニカルノートは、米国 Macromedia, Inc. の Macromedia, Inc. の Eval() on the left side of an argument causes error (TechNote 16187) をもとに作成されました。

ID: fl0263
Product: Flash
Versions: MX
OS: All
Browser: N/A
Server: N/A
Database: N/A
Former ID: N/A