呼叫帶空括號或根本不帶括號的函數對於沒有參數的函數來說可能看起來無關緊要。然而,仔細檢查就會發現一個微妙的差異。
考慮以下兩個範例:
window.onload = initAll();
window.onload = initAll;
1 。立即呼叫:
在第一個範例中,空括號立即呼叫 initAll() 函數,並將傳回值指派給 window.onload。通常,這不是所需的行為,因為 initAll 應在 onload 事件發生時執行。
2.參考賦值:
在第二個範例中,initAll 函數本身被賦值給 window.onload。這意味著該函數在載入事件被觸發之前不會執行。此方法可確保正確設定事件處理程序。
在 JavaScript 中,函數是第一類物件。這意味著它們可以儲存在變數中,作為參數傳遞,並作為屬性分配。這就是以下語法有效的原因:
window.onload = () => initAll();
在這種情況下,將建立一個匿名函數,該函數在呼叫時會立即呼叫 initAll()。然而,這個外部函數的參考仍然分配給window.onload,因此事件處理程序將等待load事件來觸發這兩個函數的執行。
以上是JavaScript 函式呼叫:空括號-立即呼叫還是引用賦值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!