0

我正在使用 HTML5 WebWorkers,我遇到了这样的问题(在使用闭包编译器编译我的脚本时):

我有两个文件(.js),里面有这段代码:

...

var encoder = null;

...

换句话说,我有两个同名的全局变量。

这些文件将用作我要启动的两个工作人员的源,并且据我所知,这两个文件都将在它们自己的范围内执行,并且在运行时不会发生冲突。

另一个条件是我想一次编译两个文件(模块)

--module module1:1

--js file

--module module2:1

--js file2.js

但是,Closure Compiler 检测到冲突并说 module2 应该依赖于 module1,因为两者都有相同的全局变量。

我该怎么办?

4

1 回答 1

3

有几个不同的选项:

  1. 将您的变量用作全局(窗口)对象的属性。定义如下:window.encoder = window['encoder'] || {};
  2. @suppress {duplicate}向第二个变量定义添加注释。
  3. 添加一个立即执行的匿名函数包装器,将您的变量定义移出全局范围。然后,您可能需要显式导出变量以在全局范围内重新公开它。
于 2012-11-28T14:10:01.650 回答