arguments.callee で再帰処理

ActionScript 3 触ってて思い出した callee 関数の存在。
たしかJavaScriptでも普通に使えたよね?ってことでFx3で試したら使えた。なんでこんな簡単な再帰を今までつかってなかったんだろう。とりあえず忘れないようにメモ。

サンプル

※注意:アラートが何回か出てうざいです。

function calleeTest(num){
  if(num<1000){
    alert(num*num);
    calleeTest.arguments.callee(num*num);
  }
}
calleeTest(2)

ブックマークレット用 改行抜いてね。

javascript:(function(){function calleeTest(num){if(num<1000)
{alert(num*num);calleeTest.arguments.callee(num*num);}
}calleeTest(2)})()

追記

思い出した。calleeはIEで重いらしいってのを読んで使ってなかったんだった。軽いスクリプトなら使ってもいいかもしれないけど規模とTPOにあわせてしっかり考えるべきだね。
http://d.hatena.ne.jp/os0x/20081127/1227756637

追記その2

@taku_eof さんから下記の情報をいただきました。

arguments.callee は ECMAScript 5 Strict Mode では TypeError になる件 (10.5 & Annex C)

http://twitter.com/taku_eof/status/1844590022

ECMAScriptの仕様書とかまともに読んだこと無いや。。。読まねば。
@taku_eofさんありがとうございます!