Babel ES6 - IIFE:仅阻止

时间:2016-02-16 18:24:30

标签: ecmascript-6 babeljs

我正在进行一个项目,我确实有Babel 6设置。

我以为我可以像这样使用IIFE块:

{
   let test = 'this is a test';
}

它将转换为:

(function(
   var test = 'this is a test';
))();

但是输出文件是:

{
   var test = 'this is a test';
}

我在这里错过了什么吗?

由于

1 个答案:

答案 0 :(得分:3)

出于性能原因,babel不使用IEFE来区分范围。然而,块中的变量将是具有相同名称的块外部的变量:

{
   let test = 'this is a test';
}
console.log(test);

编译到

{
   var _test = 'this is a test';
}
console.log(test);

这在函数或模块中没有任何区别,它只会导致全局脚本中的可区分行为。