這看起來不太合適,但這就是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