[英]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.