簡體   English   中英

為什么在立即調用的函數表達式的末尾添加 ()?

[英]Why add () at the end of an immediately-invoked function expression?

所以我決定“重新學習”JavaScript,因為我忘記了很多。 我偶然發現了“立即調用的函數表達式”。

我理解了最后除了()之外的所有內容。

例子:

!(function(){
    console.log("Works");
})() // <----

我注意到沒有它,它就無法運行。 但有了它,它奏效了。 為什么()重要?

我發現的其他類似問題沒有完全相同的問題,我也在網上搜索過,仍然沒有。

執行任何函數的方式是將包含在()的參數列表放在對函數求值的表達式之后。

對於普通的命名函數,表達式只是函數的名稱。 IIFE 不需要名稱,因為它只使用了一次,所以它只是一個匿名函數表達式。

但是您仍然以相同的方式執行它,即在表達式之后放置一個參數列表。 通常 IIFE 不需要任何實際參數,因此參數列表為空。

(function() {
  console.log("Works!");
})();

本質上是一樣的

function tempName() {
  console.log("Works!");
}
tempName();

除了它不創建名稱tempName

如果你在最后省略了() ,就像只寫

tempName;

這只是對函數的引用,它不會調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM