アプリキャストで「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回のループでもまわせますね。