アプリキャストで「Infinite Loop??」になったときの対処法

アプリキャストで少し複雑なコードを書くと、よく「Infinite Loop」というエラーに遭遇します。
これはfor文などの制御構造でループをまわしすぎると出るエラーなのですが、、、

//スクリプト
for (var i = 0; i < 10000; i++) { print('' + i); }

//ログ出力
0
1
2
(中略)
998
999
JS_ERROR: memory:0x4d6fe60,0xff.FileLoad.0x2e:0:
Infinite Loop?? Script Stopped.

と、このようにたった1000回のループで止まってしまうため、かなり厳しめの制約となっています。


ただ実はこれを回避する方法があるんです。それは、、、


forEachやmapなど、Arrayのイテレーション関数を使ってループする方法です。
なんだそんなことかと思われるかもしれませんが、JavaScript高階関数になれない人にはなかなか気づきにくいポイントです。

//forEachでは1000回を超えるイテレーションが可能。
someArray.forEach(function() {
  ...
});

ちょっと頭をひねれば10000回のループでもまわせますね。