首頁 >web前端 >js教程 >為什麼 `setTimeout(alertMsg, 3000)` 優於 `setTimeout('alertMsg()', 3000)`?

為什麼 `setTimeout(alertMsg, 3000)` 優於 `setTimeout('alertMsg()', 3000)`?

Linda Hamilton
Linda Hamilton原創
2024-11-22 08:39:14982瀏覽

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout(

使用引號和括號的setTimeout 的區別

使用setTimeout 時,可以不帶引號或括號直接呼叫函數,也可以將函數名稱用引號括號起來帶括號。細分如下:

帶括號:

setTimeout("alertMsg()", 3000);

在這種情況下,「alertMsg()」被視為字串,setTimeout 將執行該字符串一個腳本。 不建議,因為它可能會導致意外行為。

不帶引號和括號:

setTimeout(alertMsg, 3000);

這是首選方式將函數引用傳遞給 setTimeout。它直接傳遞alertMsg,假設它是一個函數。

只包含引號:

setTimeout("alertMsg", 3000);

這是上一個範例的別名,但它是 不建議。這意味著您正在向 setTimeout 傳遞一個字串,這可能會產生誤導。

setTimeout 的其他注意事項

  • 傳遞函數引用:總是傳遞函數引用或匿名函數作為 setTimeout 的第一個參數。
  • 傳遞參數: 要將參數傳遞給函數,請使用回調或跨瀏覽器相容性較差的方法,將它們作為 setTimeout 的參數。
  • 回呼上下文: 預設情況下,回呼的上下文是全域物件視窗。您可以使用bind更改它。
  • 安全性:避免將字串傳遞給setTimeout,因為它可以執行任意腳本。

以上是為什麼 `setTimeout(alertMsg, 3000)` 優於 `setTimeout('alertMsg()', 3000)`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn