首頁 > web前端 > js教程 > 為什麼我的'setInterval”回呼只運行一次?

為什麼我的'setInterval”回呼只運行一次?

Mary-Kate Olsen
發布: 2024-12-11 03:36:11
原創
944 人瀏覽過

Why Does My `setInterval` Callback Only Run Once?

單次執行setInterval回呼:

考慮以下旨在建立計數器的程式碼:

function timer() {
  console.log("timer!")
}

window.setInterval(timer(), 1000)
登入後複製

考慮以下旨在建立計數器的程式碼:

但是,此程式碼僅執行計時器函數一次。讓我們深入研究為什麼會出現這個問題以及如何解決。

出現這個問題是因為 setInterval 的第一個參數應該是函式引用,而不是函式呼叫。在上面的程式碼中,timer() 被立即調用,傳回 undefined。因此,setInterval 設定為以 1000 毫秒的間隔呼叫 undefined,這導致單次執行而不是連續循環。
function timer() {
  console.log("timer!");
}

window.setInterval(timer, 1000);
登入後複製

為了修正這個問題,我們需要傳遞函數參考而不是呼叫函數。以下是修正後的程式碼:

在這個修正後的版本中,計時器作為參考傳遞,允許 setInterval 以指定的時間間隔呼叫它。
window.setInterval( function() {
  console.log("timer!");
}, 1000)
登入後複製

或者,我們可以使用匿名函數作為回調:

這種方法更短,但當函數變得更多時,可讀性可能會降低複雜。 透過實施這些更改,計時器函數現在將按照所需的時間間隔重複執行,確保計數器連續運作。

以上是為什麼我的'setInterval”回呼只運行一次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板