我需要将IIFE与ES6模块一起使用吗?

时间:2020-06-08 17:44:55

标签: javascript ecmascript-6 module iife

在airbnb样式指南中,它指出几乎不需要IIFE。

https://github.com/airbnb/javascript/blob/master/README.md#functions

7.2将立即调用的函数表达式包装在括号中。埃斯林特:包裹的女人

为什么?立即调用的函数表达式是一个单元-将其及其包装的调用paren封装在parens中,以整洁的方式表示出来。 请注意,在一个到处都是模块的世界中,几乎不需要IIFE。

// immediately-invoked function expression (IIFE)
(function () {
  console.log('Welcome to the Internet. Please follow me.');
}());

有人可以解释为什么会这样吗?我无法在任何地方找到解释,该解释说如果我在模块js脚本的顶层创建函数,则不会会位于全局命名空间中。

1 个答案:

答案 0 :(得分:3)

IIFE的最常用用法是创建一个变量存在范围,以使变量不会成为全局变量。

模块具有自己的作用域,并且在模块顶层声明的变量的作用域是该模块的作用域,而不是全局的作用域。