我有這個計數器我做了,但我希望它永遠運行,這很簡單,我在這裏做錯了什麼?setInterval回調只運行一次
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
我有這個計數器我做了,但我希望它永遠運行,這很簡單,我在這裏做錯了什麼?setInterval回調只運行一次
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
您使用函數調用而不是函數引用作爲setInterval的第一個參數。像這樣做:
function timer() {
console.log("timer!");
}
window.setInterval(timer, 1000);
以下(但在功能變得更大也不易閱讀):
window.setInterval(function() {
console.log("timer!");
}, 1000)
setInterval
和setTimeout
必須與回調一起使用,如:
setInterval(timer, 1000);
或未命名的功能:
setInterval(function() { console.log("timer!"); }, 1000);
爲什麼你的代碼不工作 - 當你將一個函數作爲參數傳遞給另一個帶括號的函數時,例如: doSomething (someFunc())
你正在傳遞函數的結果。
當函數作爲對象傳遞時,例如, doSomething (someFunc)
你傳遞迴調。這種方式someFunc
作爲參考傳遞,它在調用函數中的某處執行。這與指向其他語言的函數的指針相同。
一個常見的錯誤是使用這兩個函數,如w3schools所示。這會隱含調用eval
。
問題是'timer()'調用由計算'timer'產生的函數對象,然後將結果('undefined')傳遞給'setTimeout'。所以,不要調用它。相反,只需傳遞函數對象:'setInterval(timer,1000)' – 2012-04-16 22:57:00