[Bug] [AS3] 配列に不要なカンマが入って undefined が紛れ込む
Posted: | 2014-09-17 |
Category: | BugPattern |
Tags: | #AS3 |
概要
AS3 で配列を扱っている部分で、想定していない要素が処理されている感じがする。
// 例えば配列内のタスクを連続実行するような関数があるとして
runProcesses([
,_initHogeHoge
,_loadFugaFuga
,_doPiyoPiyo
]);
// ... 何か挙動がおかしいぞ?
原因
AS3 では、配列のリテラルでカンマだけを打つ記述が許されるようだ。 上記の例では、_initHogeHoge の前に想定しないカンマが打たれていたが、 コンパイルエラーが出ないので気づきにくい。
公式のドキュメント
をざっと見ても該当する部分は見当たらなかったが、
カンマだけ打った場合は undefined
が書かれたのと同じになるようだ。
// この記述は通る
// [undefined, 2, undefined, 4] と等価っぽい
var list:Array = [, 2, , 4];
for each (var item:* in list) {
trace(item);
}
/* 出力結果:
-----------------
undefined
2
undefined
4
*/
解決法
気をつけましょう。