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

Javascript 为什么在setTimeout()超时之前调用我的函数?,javascript,firefox,settimeout,Javascript,Firefox,Settimeout,这似乎不对,但这就是Firefox的表现 setTimeout(print(),5000); function print(){ console.log(1); } 在5秒钟结束之前,单击链接之后,在下一页开始呈现之前,1将打印到控制台。有什么想法吗?谢谢 编辑:重新命名,以明确示例代码中存在错误,而不是firefox行为。否,问题是您正在立即执行打印功能。删除括号,以便传递函数对象而不是执行它 setTimeout(print,50000); 当Firefox得到一个调用print

这似乎不对,但这就是Firefox的表现

setTimeout(print(),5000);
function print(){
    console.log(1);
}
在5秒钟结束之前,单击链接之后,在下一页开始呈现之前,1将打印到控制台。有什么想法吗?谢谢


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

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

setTimeout(print,50000);
当Firefox得到一个调用print的表达式时,它将调用print,比如print

您正在调用print并将其返回值undefined传递给setTimeout


放下以传递函数本身。

值得一提的是,50000毫秒是50秒,而不是5秒。可能的