为什么setTimeout会立即执行?

时间:2014-03-03 22:15:54

标签: javascript function settimeout

我有一个简单的JavaScript setTimeout函数,但它拒绝工作

setTimeout(timeup(tc,chosen),10000)

......这就是功能:

timeup = function (clt,clo)
{   
    alert("time up")
}

...时间提醒警报立即出现,而不是在10秒之后,有人能告诉我为什么会这样吗?

4 个答案:

答案 0 :(得分:8)

因为你实际上是在setTimeout函数中调用timeup(tc,chosen)函数。

尝试:

setTimeout(function(){
  timeup(tc,chosen);
}, 10000);  

答案 1 :(得分:4)

在您的示例中,您调用函数并将其结果传递给setTimeout函数。

使用存储在变量中的函数的有效方法是:

setTimeout(timeup, 10000);

但它不允许传递参数。要传递参数,您可以尝试:

setTimeout(function(){
  timeup(tc,chosen);
}, 10000);

答案 2 :(得分:3)

关键是你正在调用超时之前的函数,当你添加(tc,选择)这个时间函数。

删除()

  

的setTimeout(timeup,10000)

这将在10000ms后启动您的功能

答案 3 :(得分:1)

您需要将代码包装在匿名函数中:

setTimeout(function() {timeup(tc,chosen)},10000);

这会将您的代码置于计时器的上下文中,而不是您现在看到的内联执行。