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さんありがとうございます!