我正在进行一个项目,我确实有Babel 6设置。
我以为我可以像这样使用IIFE块:
{
let test = 'this is a test';
}
它将转换为:
(function(
var test = 'this is a test';
))();
但是输出文件是:
{
var test = 'this is a test';
}
我在这里错过了什么吗?
由于
答案 0 :(得分:3)
出于性能原因,babel不使用IEFE来区分范围。然而,块中的变量将是具有相同名称的块外部的变量:
{
let test = 'this is a test';
}
console.log(test);
编译到
{
var _test = 'this is a test';
}
console.log(test);
这在函数或模块中没有任何区别,它只会导致全局脚本中的可区分行为。