Babel没有编译全局变量

时间:2016-04-28 09:05:39

标签: javascript babel

我在编码时错过了var声明。我安装了preset-0transform-runtime。控制台显示以下错误:

key is not defined

这是我正在运行的代码:

let set = new WeakSet();
key = {}; // missing var
set.add(key);
console.log(set.has(key));

但是当我添加var关键字时,一切都很好:

let set = new WeakSet();
var key = {}; // added var
set.add(key);
console.log(set.has(key));

控制台输出:

true

这意味着我无法随意使用babel创建全局变量?

1 个答案:

答案 0 :(得分:3)

不是那样你不能。

您始终可以从任何文件为select t1.name from trips t1 inner join types t2 on t1.type =t2.type 分配变量,并从应用中的任何其他文件中访问此值。但这不是在您的应用中全局共享数据的最佳方式。

最好的方法是创建一个文件,比如MyFile.js

window.MyKey = whateverValue

现在,您可以在应用中的任何位置请求此文件,并访问MyFile的同一实例。所以,

randomFile.js

class MyFile {
 constructor() {
   this.MyKey = 10;
 }
}

export default (new MyFile);

这种方法可以避免污染全局范围,但您可以完成相同的功能。