簡體   English   中英

為什么這個帶有箭頭功能的 IIFE 不執行?

[英]Why does this IIFE with Arrow function not execute?

我很好奇為什么這個 IIFE 會運行

(function() {console.log("hi")}());  //"hi"

但是使用箭頭函數它不會運行

(()=> console.log("hi")());

為什么這是一個錯誤?

(()=> {return console.log("hi")}());

但是現在移動括號可以工作了

(()=> {return console.log("hi")})();//"hi"

括號和 function 關鍵字正在改變 IIFE 執行的行為,有人知道為什么嗎?

(()=> console.log("hi")());

IIFE 由一個函數定義組成,緊跟在()

箭頭函數定義由一些參數組成,后跟=> ,后跟表達式。

console.log(...)()是一個表達式(意思是將 console.log 作為函數調用,然后將其返回值作為函數調用),因此它被視為函數定義的一部分(因此()做不遵循函數定義,因為它們是函數定義的一部分)。


括號和 function 關鍵字正在改變 IFFY 執行的行為,有人知道為什么嗎?

它們是分組運算符 它們包圍了函數定義,使得()在函數定義之外顯式跟隨它。

暫無
暫無

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

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