JSLint:在定义之前就已使用


95

嗨,我有3个javascript文件。

  • jquery.js
  • Utility.js
  • file1.js

在file1.js我有

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});

在定义之前,我得到一个错误“ jQuery”。并且在定义之前使用了“文档”。

如何安全摆脱此警告。

如果我做

var document = document || {}; 

然后在我的Utility.js中(如果使用的话)在IE中为null,在Firefox中为ok。

最好的解决方案是什么?


JS Lint的可能重复项:在定义之前使用了“快捷方式”。另外,请确保已在选项中选择了“ 假定浏览器 ”。
安迪E

@ChunpingWang注意到您仍然对SO保持活跃,并且这个问题没有得到接受的答案。这些答案是否都缺少使它们被接受所需的东西?似乎昆汀的答案可以解决所要求的问题。还需要其他信息来回答您的问题吗?
鲁芬2015年

Answers:


169

文档中

JSLint还识别/ * global * /指令,该指令可以向JSLint指示此文件中使用的变量是在其他文件中定义的。注释可以包含逗号分隔的名称列表。每个名称都可以选择后面跟一个冒号,然后为true或false,如果为true,则表示该文件可以将变量分配给它;如果为false,则表示不允许进行赋值(这是默认设置)。该指令尊重功能范围。

可以为您预定义一些全局变量。选择“假定浏览器(浏览器)”选项以预定义Web浏览器提供的标准全局属性,例如document和addEventListener。

例:

/*jslint browser: true*/
/*global $, jQuery*/

25
记:你不能把一个空间之前,global因此/* global var, var2 */无法正常工作。/*global var, var2*/作品
radixhound 2012年

4
复数是等效的,/*globals */并且也一样有效:并且在添加变量列表时也更有意义
Robert Koritnik 2012年

2
因此,JSLint的解决方案抱怨所有文件中都缺少某些内容,因此在所有文件中添加了一行...这是一个糟糕的建议。
塞林

@Cerin —否,JSLint抱怨使用无法找到其定义的变量的解决方案是告诉它您在另一个文件中定义了它(例如,与在变量名称中输入错字相反)这会在以后破坏您的程序)。
昆汀

1
@Quentin,是的,要解决此问题,需要在每个文件中“讲述jQuery”。对于没有任何好处的事情,这是一个巨大的工作。您不妨在JSLint中禁用该检查。
塞林

30

正如昆汀所说,这是一条/*global*/指令。

这是一个示例(将此放在文件顶部):

/*global var1,var2,var3,var4,var5*/

确保初始全局语句与处于同一行/*,否则将中断。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.