const和让IIFE模式不必要吗?

Kyl*_*ell 19 javascript scope hoisting ecmascript-6

据我了解,IIFE模式是一个解决ES5及以下无法创建块范围的事实.通过将所有内容包装在函数中并立即调用它,我们可以创建一个范围.

现在,let并且const将获得更多浏览器的支持,这是否减少了对IIFE模式之类的需求?

Ber*_*rgi 16

是的,只要块范围的声明(函数,let/ const/class)被广泛采用,块就会取代IEFE .你需要一个范围,例如关闭?这里有一个块,无论是循环体还是声明列表的一部分.

但是,仍有一种IEFE应用程序无法替代块:模块模式.块没有返回值,并且变更更高范围的变量是丑陋的,因此我们仍然会在创建需要私有状态的对象时看到函数表达式:

const example = (() => {
    …
    return …;
}());
Run Code Online (Sandbox Code Playgroud)

  • 您将使用ES2015模块来维护私有状态和代码。也就是说,当浏览器支持它们时:( (2认同)
  • @Esteban:很好的反对。但是,ES6模块通常需要一个自己的文件,您可能不想将代码散布得太多。 (2认同)