gpt4 book ai didi

javascript - 为什么我们需要用 () 包裹 IIFE

转载 作者:行者123 更新时间:2023-11-30 08:18:34 28 4
gpt4 key购买 nike

当我们使用一个独立的函数语句作为 IIFE 时,我们需要用 () 包装它以使其工作

// IFFE
(function a(){
console.log('Hello')
}());

// IFFE
(function a(){
console.log('Hello')
})()

如果我们不使用 () 代码会产生语法错误

function a(){
console.log('Hello')
}()

但是当我们用作函数表达式时,我们不需要用 () 包裹它

let a = function a(){
console.log('Hello')
}()

那么当我们想将它用作函数语句时,为什么我们需要用 () 包装它?

最佳答案

当解释器解析 Javascript 文本时,当它遇到一个新行和 function a 时,它将开始将其解释为名为 a 的函数的函数声明>。最终,它将到达带有 的功能 block 的末尾。如果你在那之后放置一个 (),它会尝试将 ( 解析为表达式的开头 - 但表达式必须计算为 something,它不能为空,所以当它看到 ) 时,它会抛出。

(你可以把一些东西放在括号里,但它只是一个未使用的表达式,函数不会被调用:

function foo() {
console.log('foo');
}(123);

console.log('done');

)

(放在函数a之前确保解释器将函数a解析为表达式 (一个可以使用的值,比如后面的 ()),而不是一个语句(某事——比如声明函数在该范围内可用——但不求值)。

关于javascript - 为什么我们需要用 () 包裹 IIFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57666756/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com