2012-01-11 110 views
0

這看起來不太合適,但這就是Firefox似乎在採取行動。爲什麼我的函數在setTimeout()超時之前被調用?

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

在5秒鐘之前,單擊鏈接並在下一頁開始呈現之前,1會打印到控制檯。有任何想法嗎?謝謝!

編輯:重新命名,以顯而易見,示例代碼中存在一個錯誤,而不是firefox行爲。

+0

對於它的價值,50000毫秒是50秒,而不是5. – lonesomeday 2012-01-11 21:00:57

+0

可能的重複[爲什麼當我使用setTimeout時立即執行該方法?](http://stackoverflow.com/questions/7137401/why-is -the-方法執行的-緊時-I-使用-的setTimeout) – 2012-01-14 10:04:27

回答

7

不,問題是您正在立即執行打印功能。刪除括號,以便傳遞函數對象而不是執行它。

setTimeout(print,50000); 
4

Firefox將調用print當它得到調用它的表達式,如print()

您正在致電print並將其返回值(undefined)傳遞給setTimeout

刪除()以傳遞函數本身。

相關問題