为什么在setTimeout()发生超时之前调用我的函数?

时间:2012-01-11 20:52:47

标签: javascript firefox settimeout

这似乎不对,但这就是Firefox似乎在行动的方式。

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

在5秒钟之前,单击一个链接并在下一页开始渲染之前,将向控制台打印1。有任何想法吗?谢谢!

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

2 个答案:

答案 0 :(得分:7)

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

setTimeout(print,50000);

答案 1 :(得分:4)

Firefox会在获得调用它的表达式时调用print,例如print()

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

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