Babel在特定的scenerio中使用下划线作为变量的前缀

时间:2016-07-14 20:16:05

标签: javascript babeljs

这是我能做到的最简单。

一部开拓创新

var a = {
    a: function() {
        a.b;
    }
};
babel js -d lib --presets es2015

之后

"use strict";

var _a = {
    a: function a() {
        _a.b;
    }
};

它改变了一个全局变量,它扰乱了我已经编写过的广泛使用它的代码。请注意,只有当父级和子级具有相同名称并且我尝试访问子级中任何父级属性表单时,才会发生这种情况。

如果名称不相同(a)或者如果我不访问任何根对象的属性(a.b),则不会添加下划线。

我也知道下划线只出现在es2015预设中,但这是有道理的,因为那些是我唯一的插件。

1 个答案:

答案 0 :(得分:2)

Babel假定文件的顶级范围是模块范围,而不是全局范围,因此重命名变量是安全的。如果你想要一些全球化的东西,你最好不要明确它,例如。

attributes: [NSKernAttributeName: 5.0]

之一
var a = {