2012-01-11 60 views
0

这看起来不太合适,但这就是Firefox似乎在采取行动。为什么我的函数在setTimeout()超时之前被调用?

setTimeout(print(),5000); 
function print(){ 
    console.log(1); 
} 

在5秒钟之前,单击链接并在下一页开始呈现之前,1会打印到控制台。有任何想法吗?谢谢!

编辑:重新命名,以显而易见,示例代码中存在一个错误,而不是firefox行为。

+0

对于它的价值,50000毫秒是50秒,而不是5. – lonesomeday 2012-01-11 21:00:57

+0

可能的重复[为什么当我使用setTimeout时立即执行该方法?](http://stackoverflow.com/questions/7137401/why-is -the-方法执行的-紧时-I-使用-的setTimeout) – 2012-01-14 10:04:27

回答

7

不,问题是您正在立即执行打印功能。删除括号,以便传递函数对象而不是执行它。

setTimeout(print,50000); 
4

Firefox将调用print当它得到调用它的表达式,如print()

您正在致电print并将其返回值(undefined)传递给setTimeout

删除()以传递函数本身。

相关问题