コンテンツにスキップ

Top

JavaScript の setTimeout がすぐ実行される!

結論から言えば引数つけるな、ということ。

setTimeout(this.hoge, 1000);

は正しく1秒後にhoge()が実行されるが、

setTimeout(this.hoge("aaa"), 1000);

は即時実行されてしまう。
なんでかは知らん。

んで、引数つけたいなら、3番目以降に渡せばよい。

setTimeout(this.hoge, 1000, "aaa");

が、ブラウザによっては対応していないとのことなので注意が必要。
(ネット上だとIEでは対応してない、とか書いている人がいたが、まぁもうIE使わんだろう)

トリッキーな書き方として無名関数の中で呼び出す、という作戦はある。

setTimeout(function(){hoge("aaa")}, 1000);

まぁ見慣れればあれだけど、初見だと何してんの?って感じ。

以上!