首頁 >web前端 >js教程 >為什麼 `setTimeout` 中的函數呼叫不總是用括號括起來?

為什麼 `setTimeout` 中的函數呼叫不總是用括號括起來?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-23 18:27:17751瀏覽

Why Don't Parentheses Always Surround Function Calls in `setTimeout`?

何時在函數呼叫中使用括號

檢查以下程式碼時:

var myFunction = function() {
  setTimeout(myFunction, 1000);
}
myFunction();

有人可能想知道為什麼setTimeout內的函數呼叫不需要括號,而獨立函數呼叫

理解區別

  • myFunction:此名稱指的是函數定義。
  • myFunction():新增括號會呼叫function.

超時函數參數

超時函數參數

超時參數中的括號

在setTimeout(myFunction(), 1000) 中包含括號可能會產生意想不到的後果如果myFunction 傳回一個函數(例如,使用箭頭函數)。在這種情況下,setTimeout 將接收 myFunction 的回傳值而不是函數參考本身。這可能會導致重複的函數執行或意外行為。

因此,當使用 setTimeout 或需要函數引用的類似方法時,通常建議

省略函數參數的括號

以上是為什麼 `setTimeout` 中的函數呼叫不總是用括號括起來?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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