一个小问题:setTimeout()以回调函数的名称作为参数,不要在名称后面带"()"

一段类似这样的代码:

function callback() {
    alert("callback");
    setTimeout(callback(), 5000);
}

执行时,发现callback函数并不是每隔5秒执行一次,而是立即重复执行。

问题在哪?

就在于setTimeout参数的问题。

由于上面代码中,setTimeout(callback(), 5000),会首先执行callback函数,将callback函数的返回结果作为5秒后要执行的代码。

正确代码如下:

function callback() {
    alert("callback");
    setTimeout(callback, 5000);
}

 

posted on 2013-03-15 16:35  张孝军  阅读(421)  评论(0)    收藏  举报

导航