这看起来不太合适,但这就是Firefox似乎在采取行动。为什么我的函数在setTimeout()超时之前被调用?
setTimeout(print(),5000);
function print(){
console.log(1);
}
在5秒钟之前,单击链接并在下一页开始呈现之前,1会打印到控制台。有任何想法吗?谢谢!
编辑:重新命名,以显而易见,示例代码中存在一个错误,而不是firefox行为。
这看起来不太合适,但这就是Firefox似乎在采取行动。为什么我的函数在setTimeout()超时之前被调用?
setTimeout(print(),5000);
function print(){
console.log(1);
}
在5秒钟之前,单击链接并在下一页开始呈现之前,1会打印到控制台。有任何想法吗?谢谢!
编辑:重新命名,以显而易见,示例代码中存在一个错误,而不是firefox行为。
不,问题是您正在立即执行打印功能。删除括号,以便传递函数对象而不是执行它。
setTimeout(print,50000);
Firefox将调用print
当它得到调用它的表达式,如print()
。
您正在致电print
并将其返回值(undefined
)传递给setTimeout
。
删除()
以传递函数本身。
对于它的价值,50000毫秒是50秒,而不是5. – lonesomeday 2012-01-11 21:00:57
可能的重复[为什么当我使用setTimeout时立即执行该方法?](http://stackoverflow.com/questions/7137401/why-is -the-方法执行的-紧时-I-使用-的setTimeout) – 2012-01-14 10:04:27