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

use*_*112 0 javascript firefox settimeout

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

setTimeout(print(),5000);
function print(){
    console.log(1);
}
Run Code Online (Sandbox Code Playgroud)

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

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

lon*_*day 7

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

setTimeout(print,50000);
Run Code Online (Sandbox Code Playgroud)