無名関数で再帰
arguments.calleeで現在実行中の関数そのものを取得できます。これを利用して無名関数で再帰を行うことが可能です。
var stdout = document.getElementById("stdout"); // 無名関数の再帰 (function( x ) { stdout.innerHTML += x + "<br/>"; if ( x > 0 ) { arguments.callee( x-1 ); // 自分自身を呼び出す。 } })(100) ;
ポーリングで非同期処理の完了を待つのに使えます。
var stdout = document.getElementById("stdout"); // ポーリング / xがtrueになるのを待つ。 var x = false; // 条件 setTimeout( function(){ x = true; }, 5000 ); // 5秒後にxをtrueにする (function( ) { if ( !x ) { // 条件を満たさない。 // 100 ms後に再度チェック stdout.innerHTML += "wait..<br/>"; setTimeout( arguments.callee, 100 ); } else { // 条件を満たす。 stdout.innerHTML += "x=true<br/>"; } })() ;