JSLint奇怪的赋值,是闭包编译器所必需的

时间:2014-07-28 18:58:05

标签: jslint google-closure-compiler jshint

我正在使用闭包编译器来缩小和加速我的代码,但是当我尝试export my functions时,我遇到了一些JSLint问题。

基本上,我有一个带有函数foo{}的对象,foo.bar()通过外部文件调用。为了在外部调用此函数,我需要在编译之前向我的脚本添加一些声明:

window['foo'] = foo;
window['foo']['bar'] = foo.bar;

这很有效,但是 - 就像以前一样 - JSLint认为我甚至在尝试这个时都很精神。我设法通过在这两行之前声明/*jslint sub: true */来抑制点符号错误,但我仍然收到以下错误:

"window['foo']['bar'] = foo.bar;" - Weird assignment

这没有错,这是一个奇怪的任务背景,但我需要它在那里,以便我的代码工作。

我看到它的方式,我有三种可能的选择:

  1. 告诉JSLint不要打扰他们两行。
  2. 取消Weird assignment错误。
  3. 找到另一种让我的代码与闭包编译器一起工作的方法。
  4. 问题是,我不知道如何去做任何一件事。

1 个答案:

答案 0 :(得分:0)

您可以使用goog.exportSymbol而不是括号表示法导出名称:https://github.com/google/closure-library/blob/master/closure/goog/base.js#L1532

Closure Compiler了解goog.exportSymbol是什么,因此它会删除显式的exportSymbol调用,并将foobar直接添加到窗口中。