再帰

ファーストクラスオブジェクトとして宣言した関数は再帰的に呼び出せるんだろうか、と疑問に思ったので試してみた。

<html>
<head>
<script>
var myLoop = function(array, func) {
  if (array.length != 0) {
    func(array.shift());
    myLoop(array, func);
  }
}
</script>
</head>
<body>
 <button onclick="myLoop([0,1,2], alert);">test</button>
</body>
</html>

成功。
アラートが3回実行された。
JSの変数宣言が変なタイミングで実行されるのはこのためなのかな。