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(使用前将#替换为@)