
- Javascript 基礎教程
- Javascript - 首頁
- JavaScript - 路線圖
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 啟用
- JavaScript - 位置
- JavaScript - 語法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 註釋
- JavaScript - 變數
- JavaScript - let 語句
- JavaScript - 常量
- JavaScript - 資料型別
- JavaScript - 型別轉換
- JavaScript - 嚴格模式
- JavaScript - 保留關鍵字
- JavaScript 運算子
- JavaScript - 運算子
- JavaScript - 算術運算子
- JavaScript - 比較運算子
- JavaScript - 邏輯運算子
- JavaScript - 位運算子
- JavaScript - 賦值運算子
- JavaScript - 條件運算子
- JavaScript - typeof 運算子
- JavaScript - 空值合併運算子
- JavaScript - delete 運算子
- JavaScript - 逗號運算子
- JavaScript - 分組運算子
- JavaScript - yield 運算子
- JavaScript - 展開運算子
- JavaScript - 指數運算子
- JavaScript - 運算子優先順序
- JavaScript 控制流
- JavaScript - if...else
- JavaScript - while 迴圈
- JavaScript - for 迴圈
- JavaScript - for...in
- Javascript - for...of
- JavaScript - 迴圈控制
- JavaScript - break 語句
- JavaScript - continue 語句
- JavaScript - switch case
- JavaScript - 使用者自定義迭代器
- JavaScript 函式
- JavaScript - 函式
- JavaScript - 函式表示式
- JavaScript - 函式引數
- JavaScript - 預設引數
- JavaScript - Function() 建構函式
- JavaScript - 函式提升
- JavaScript - 自執行函式
- JavaScript - 箭頭函式
- JavaScript - 函式呼叫
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 閉包
- JavaScript - 變數作用域
- JavaScript - 全域性變數
- JavaScript - 智慧函式引數
- JavaScript 物件
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - String
- JavaScript - Array
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Set
- JavaScript - WeakSet
- JavaScript - Map
- JavaScript - WeakMap
- JavaScript - 可迭代物件
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 標記模板
- 面向物件 JavaScript
- JavaScript - 物件
- JavaScript - 類
- JavaScript - 物件屬性
- JavaScript - 物件方法
- JavaScript - 靜態方法
- JavaScript - 顯示物件
- JavaScript - 物件訪問器
- JavaScript - 物件建構函式
- JavaScript - 原生原型
- JavaScript - ES5 物件方法
- JavaScript - 封裝
- JavaScript - 繼承
- JavaScript - 抽象
- JavaScript - 多型
- JavaScript - 解構賦值
- JavaScript - 物件解構
- JavaScript - 陣列解構
- JavaScript - 巢狀解構
- JavaScript - 可選鏈
- JavaScript - 全域性物件
- JavaScript - Mixins
- JavaScript - 代理 (Proxies)
- JavaScript 版本
- JavaScript - 歷史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 非同步
- JavaScript - 非同步
- JavaScript - 回撥函式
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任務
- JavaScript - Promise 化
- JavaScript - Promise 鏈式呼叫
- JavaScript - 定時事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 屬性
- JavaScript - 刪除 Cookie
- JavaScript 瀏覽器 BOM
- JavaScript - 瀏覽器物件模型
- JavaScript - Window 物件
- JavaScript - Document 物件
- JavaScript - Screen 物件
- JavaScript - History 物件
- JavaScript - Navigator 物件
- JavaScript - Location 物件
- JavaScript - Console 物件
- JavaScript Web APIs
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 滑鼠事件
- JavaScript - 鍵盤事件
- JavaScript - 表單事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委託
- JavaScript - 事件冒泡
- JavaScript - 事件捕獲
- JavaScript - 自定義事件
- JavaScript 錯誤處理
- JavaScript - 錯誤處理
- JavaScript - try...catch
- JavaScript - 除錯
- JavaScript - 自定義錯誤
- JavaScript - 擴充套件錯誤
- JavaScript 重要關鍵字
- JavaScript - this 關鍵字
- JavaScript - void 關鍵字
- JavaScript - new 關鍵字
- JavaScript - var 關鍵字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和屬性
- JavaScript - DOM Document
- JavaScript - DOM 元素
- JavaScript - DOM 屬性 (Attr)
- JavaScript - DOM 表單
- JavaScript - 修改 HTML
- JavaScript - 修改 CSS
- JavaScript - DOM 動畫
- JavaScript - DOM 導航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 非同步迭代
- JavaScript - Atomics 物件
- JavaScript - rest 引數
- JavaScript - 頁面重定向
- JavaScript - 對話方塊
- JavaScript - 頁面列印
- JavaScript - 驗證
- JavaScript - 動畫
- JavaScript - 多媒體
- JavaScript - 圖片地圖
- JavaScript - 瀏覽器
- JavaScript - JSON
- JavaScript - 多行字串
- JavaScript - 日期格式
- JavaScript - 獲取日期的方法
- JavaScript - 設定日期的方法
- JavaScript - 模組
- JavaScript - 動態匯入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 淺複製
- JavaScript - 呼叫棧
- JavaScript - 引用型別
- JavaScript - IndexedDB
- JavaScript - 點選劫持攻擊
- JavaScript - 柯里化
- JavaScript - 圖形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 效能
- JavaScript - 樣式指南
JavaScript - setTimeout() 方法
JavaScript setTimeout() 方法
在 JavaScript 中,setTimeout() 是一個全域性方法,允許您僅在指定時間後執行一次函式或特定的 JavaScript 程式碼。
‘window’ 物件包含 setTimeout() 方法。您可以使用 ‘window’ 物件來執行 setTimeout() 方法。
setTimeout() 方法也可以用於在使用者互動的指定時間後操作 DOM 元素。
語法
JavaScript 中 setTimeout() 方法的語法如下:
window.setTimeout(callback, delay, param1, param2, ..., paramN); OR setTimeout(callback, delay, param1, param2, ..., paramN);
setTimeout() 方法至少需要 2 個引數。
引數
- 回撥函式 (Callback) − 這是一個將在特定時間後呼叫的回撥函式。您可以將箭頭函式、函式表示式或正則表示式作為此引數的值傳遞。
- 延遲 (delay) − 這是以毫秒為單位的延遲時間,在此時間之後將呼叫回撥函式。這裡,1 秒等於 1000 毫秒。
- param1, param2, ..., paramN − 這些是可選引數,將作為回撥函式的引數傳遞。
返回值
它返回一個數字 ID,您可以使用它來清除超時。
示例
在下面的程式碼中,我們定義了 timeout() 函式,用於在網頁中列印訊息。
我們將 timeout() 函式作為 setTimeout() 方法的第一個引數傳遞,並將 1000 毫秒作為第二個引數傳遞。
setTimeout() 方法將在 1 秒或 1000 毫秒後呼叫 timeout() 函式。
<html> <body> <div id = "output"> </div> <script> document.getElementById('output').innerHTML = "Wait for a message! <br>"; setTimeout(timeout, 1000); function timeout() { document.getElementById('output').innerHTML += "This message is printed after 1 second!"; } </script> </body> </html>
輸出
Wait for a message! This message is printed after 1 second!
使用 setTimeout() 方法的箭頭函式
在下面的程式碼中,我們將箭頭函式作為 setTimeout() 方法的第一個引數傳遞。它的作用與將函式名作為引數傳遞並在外部定義函式相同。
它將在 2000 毫秒後列印訊息。
示例
<html> <body> <div id = "output"> </div> <script> document.getElementById('output').innerHTML += "You will see the message after 2000 milliseconds! <br>"; setTimeout(() => { document.getElementById('output').innerHTML += 'Hi! How are you?'; }, 2000); </script> </body> </html>
輸出
You will see the message after 2000 milliseconds! Hi! How are you?
向 setTimeout() 方法傳遞多個引數
您可以向 setTimeout() 方法傳遞多個引數。第一個引數是回撥函式,第二個引數是以毫秒為單位的延遲時間,其他引數將傳遞給函式引數。
在下面的程式碼中,我們向 setTimeout() 方法傳遞了 5 個引數。在 sum() 函式中,我們接收了 seetTimeOut() 方法的最後 3 個引數作為引數並對它們求和。
示例
<html> <body> <div>Wait for a sum of 3 number.!</div> <div id = "output"></div> <script> setTimeout(sum, 1000, 10, 20, 30); function sum(num1, num2, num3) { let result = num1 + num2 + num3; document.getElementById('output').innerHTML = "Sum = " + result; } </script> </body> </html>
輸出
Wait for a sum of 3 number.! Sum = 60
每 N 秒執行一次程式碼
我們在下面的程式碼中使用 setTimeout() 方法建立了一個計數器。
我們為計數器定義了全域性變數 p。在 counter() 函式中,我們列印計數器的值,並使用 setTimeout() 方法在 1000 毫秒後再次呼叫 counter 函式。
示例
<html> <body> <div id = "output"> </div> <script> let output = document.getElementById('output'); output.innerHTML += "The output of the counter is given below. <br>"; var p = 0; function counter() { output.innerHTML += "count is - " + p + ".<br>"; setTimeout(counter, 1000); p++; } counter(); </script> </body> </html>
輸出
The output of the counter is given below. count is - 0. count is - 1. count is - 2. count is - 3. count is - 4. count is - 5. count is - 6.
JavaScript clearTimeout() 方法
有時,開發人員需要在函式或 JavaScript 程式碼執行之前取消超時。在這種情況下,您可以使用 clearTimeout() 方法。
語法
您可以按照以下語法使用 clearTimeout() 方法。
clearTimeout(id);
引數
id − 這是 setTimeout() 方法返回的 ID,用於取消超時。
示例
在下面的程式碼中,我們定義了 startTimeOut() 和 stopTimeOut() 函式,它們將在使用者按下相應的按鈕時被呼叫。
在 startTimeOut() 函式中,我們設定 3 秒的超時,並將 setTimeout() 方法返回的 ID 儲存到 ‘timeOut’ 變數中。
在 stopTimeOut() 函式中,我們使用 clearTimeout() 方法並將 ‘timeOut’ 作為引數傳遞以清除超時。
<html> <body> <p>Click the Stop timeout button within 3 seconds after pressing the Start timeout button.</p> <button onclick = "startTimeOut()">Start Timeout</button> <button onclick = "stopTimeOut()">Stop Timeout</button> <p id = "output"> </p> <script> let output = document.getElementById('output'); let timeout; function startTimeOut() { timeout = setTimeout(() => { output.innerHTML = "Timeout is done"; }, 3000); } function stopTimeOut() { clearTimeout(timeout); output.innerHTML = "Timeout is stopped"; } </script> </body> </html>
輸出

零延遲 setTimeout
零延遲超時意味著您透過將 0 毫秒作為引數傳遞來呼叫 setTimeout() 方法。
當您將 0 毫秒作為引數傳遞時,它可能在 0 毫秒後呼叫或不呼叫寫入回撥函式中的 JavaScript 程式碼。這完全取決於佇列中待處理的任務。一旦任務佇列完成,它將執行回撥函式的程式碼。
現在,問題是,為什麼需要零延遲超時?
有時,您需要在指令碼載入到瀏覽器後儘快執行特定的 JavaScript 程式碼。在這種情況下,您可以使用 `setTimeout()` 方法,並將 0 毫秒作為第二個引數。
語法
請遵循以下語法使用零延遲超時。
setTimeout(callback, 0);
在上面的語法中,我們將回調函式作為第一個引數,0 毫秒作為第二個引數。
示例
在下面的程式碼中,我們在網頁中添加了開始訊息、零延遲超時訊息和結束訊息。
在輸出中,您可以看到它首先列印開始訊息。之後,它列印結束訊息和零延遲超時訊息。因此,它在整個指令碼載入到瀏覽器時執行零延遲超時程式碼。
<html> <body> <div id = "output"> </div> <script> let output = document.getElementById('output'); output.innerHTML += "The code execution started. <br>"; setTimeout(function () { output.innerHTML += "Inside the zero delay timeout. <br>"; }, 0); output.innerHTML += "The code execution ended. <br>"; </script> </body> </html>
輸出
The code execution started. The code execution ended. Inside the zero delay timeout.
您也可以遞迴地使用 `setTimeout()` 方法,如計數器示例所示。此外,您還可以將匿名函式表示式作為第一個引數傳遞,例如箭頭函式。如果您想執行特定的 JavaScript 程式碼,可以在整個指令碼執行完畢後使用零延遲超時。