Javascript:使用 IIFE 和块语句之间的区别

2024-05-23

IIFE主要用于封装作用域

(function () {
    let myVar = 10; // not global
    // ...
}());

但为什么不直接使用块语句呢?

{
    let myVar = 10; // also not global
    // ...
}

除了范围封装之外,进一步使用 IIFE 是否还有其他好处?


块语句是一个相当新的功能。是的,在引入 IIFE 之前,人们使用的是 IIFE。

现在我至少能想到一种情况,IIFE 是不可替代的。看这个:

(async () => { const foo = await someAsyncFunction() })()

看?这await关键字只能存在于async函数,因此如果你的await-包含表达式不被任何函数包装,您必须通过异步 IIFE 包装它。

UPD:这个答案已经过时了,因为顶级await现在已经可用,所以不需要使用 IIFE 来包装它,因此现在 IIFE 的使用甚至更少(如果有的话)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript:使用 IIFE 和块语句之间的区别 的相关文章

随机推荐