在ECMAScript/Javascript 6中,是否需要在课堂上进行IIFE?

web*_*nci 6 javascript ecmascript-harmony ecmascript-6

如果我有

Class Car {}
Run Code Online (Sandbox Code Playgroud)

我需要用我们的函数闭包来包装吗?var会被提升到窗口吗?还是只到班上?转换后怎么样?Traceur/babel将它变成IIFE并让我们进入var?

我需要:

(function(){ 
    Class Car() {}
}());
Run Code Online (Sandbox Code Playgroud)

为了安全吗?

Arc*_*cia 2

你可以在这里看看 Babel 转译你的代码时会发生什么

除非您想隐藏该类,否则不需要使用 IIFE,并且var Class生成的类将被提升为任何变量:声明将在开始处进行,但赋值将在原始行中进行。

是的,Babel 变成letvar,但它也需要通过额外的分配来按预期工作。如果您只想编写 ES6 代码并执行它,则不必担心这些细节,只需遵循 ES6 (ES2015) 标准即可。