« 選択範囲を保存するBookmarklet | メイン | Lingrのログを保存するGreasemonkey »

setTimeoutとsetIntervalの呼び出し方

# わかりやすくするためにarcuments.calleeやClosureは使ってません。

JavaScriptがちゃんと理解されていなかった時期の書籍に書いてあったsetTimeoutとsetIntervalの呼び出し方ってこんな感じでした。
function timer(count){
    //処理 ex. console.log(count);
    count++;
    if(count<10){
        setTimeout("timer("+count+")",100);
    }
}
timer(0);
処理を文字列として渡すって本当に変な書き方です。そりゃ皆JavaScriptは変な言語だって言いますよね。

で、今はこんな感じ。
function timer(count){
    //処理 ex. console.log(count);
    count++;
    if(count<10){
        setTimeout(function(){timer(count);},100);
    }
}
timer(0);
かなりすっきり。でもこれだけの為に無名関数をつくらないといけないってなんか非効率的。

実はこんな方法もあったりして。
function timer(count){
    //処理 ex. console.log(count);
    count++;
    if(count<10){
        setTimeout(timer,100,count);
    }
}
timer(0);
むちゃくちゃすっきり。どこかで見てたけどすっかり忘れてました。今度からこうしようっと。
2009/01/17:追記
はてなブックマークでIEでは動かないと指摘があった。
MDCにもIEは対応していないとの記述があった。
Browerに依存しているとは思わなかったので、ほんのちょっただけ調べた。
ほんとにちょっと。
今、確認できるブラウザ、Firefox・Safari・Operaでは動いた。
Chromeは調べていないけど当たり前のように動きそう。

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/189

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google