Skip to content

計時器

計時器可在一段時間後執行 function

一般計時器

setTimeout 延遲一段時間後執行一次 function 內的程式碼

  • 語法為 setTimeout(function, 延遲)
  • 延遲單位為毫秒,1000 代表 1 秒
  • 使用 clearTimeout() 取消

注意

在使用已定義好的 function 時,需要注意變數型態

js
const msg = () => {
  alert('經過 5 秒囉')
}

// 正確,msg 是 function
setTimeout(msg, 5000)

// 錯誤,msg() 是 function 的回傳值
// 會立即執行 msg(),並將回傳值放入 setTimeout
// 但 msg() 沒有回傳值,所以會放入 undefined
setTimeout(msg(), 5000)

使用已定義好的 function

js
const msg = () => {
  alert('經過 5 秒囉')
}
setTimeout(msg, 5000)

使用匿名函式

js
setTimeout(()=> {
  alert('經過 5 秒囉')
}, 5000)

清除計時器範例

js
const delay = setTimeout(() => {
  alert('經過 5 秒囉')
}, 5000)
clearTimeout(delay)

Tip

在寫秒數時要特別注意,一些特別的數字可以用 const 定義
讓讀程式碼的人更容易了解你在寫什麼

js
// 86400000 代表什麼?
setTimeout(() => {}, 86400000)

// 86400000 是一天的毫秒數
const MILLISECONDS_IN_A_DAY = 86400000
setTimeout(() => {}, MILLISECONDS_IN_A_DAY)

重複計時器

setInterval() 可以每隔一段時間執行指定的程式碼
基本語法和 setTimeout() 一樣,使用 clearInterval() 清除

js
const timer = setInterval(() => {
  console.log('Hi')
}, 1000)

setTimeout(() => {
  clearInterval(timer)
}, 5000)

綜合練習

練習

使用者輸入毫秒數,經過該時間後在網頁上顯示 時間到

練習

製作計時器,從 10 開始倒數到 0,每秒在網頁上印出一個數字