【发布时间】:2020-06-08 17:44:55
【问题描述】:
在 airbnb 风格指南中,它指出 IIFE 几乎不需要。
https://github.com/airbnb/javascript/blob/master/README.md#functions
7.2 将立即调用的函数表达式包装在括号中。 eslint: wrap-iife
为什么?立即调用的函数表达式是一个单独的单元 - 包装它,它的调用括号,在括号中,干净地表达了这一点。 请注意,在一个到处都是模块的世界中,您几乎不需要 IIFE。
// immediately-invoked function expression (IIFE)
(function () {
console.log('Welcome to the Internet. Please follow me.');
}());
有人可以解释为什么会这样吗?我找不到任何解释说明如果我在模块 js 脚本的顶层创建一个函数,它将不在全局命名空间中。
【问题讨论】:
-
模块的全部意义在于它们显式地导出东西,其效果也是顶级声明不是全局的。
-
在我看来,any 命名空间可能是您不想污染的命名空间。
标签: javascript ecmascript-6 module iife