JSLint:在定义之前使用过

Chu*_*ang 95 javascript jslint undefined

嗨,我有3个javascript文件.

  • 的jquery.js
  • utility.js
  • file1.js

在file1.js我有

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});
Run Code Online (Sandbox Code Playgroud)

我得到一个错误'jQuery'在定义之前就被使用了.并且"文档"在定义之前使用.

我如何安全地摆脱这个警告.

如果我做

var document = document || {}; 
Run Code Online (Sandbox Code Playgroud)

然后在我的utility.js中如果使用它,它将在IE中为null,在Firefox中为ok.

这是什么最好的解决方案?

Que*_*tin 169

文档中

JSLint还识别一个/*global*/指令,该指令可以向JSLint指示此文件中使用的变量是在其他文件中定义的.注释可以包含逗号分隔的名称列表.每个名称可以后跟一个冒号,后跟true或false,true表示该变量可以由该文件赋值,false表示不允许赋值(默认值).该指令尊重功能范围.

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

例:

/*jslint browser: true*/
/*global $, jQuery*/
Run Code Online (Sandbox Code Playgroud)

  • 注意:你不能在`global`之前放一个空格所以`/*global var,var2*/`不起作用.`/*global var,var2*/`有效 (25认同)
  • Plural是等价的并且也可以工作:`/*globals*/`并且在添加变量列表时更有意义 (4认同)
  • 因此,JSLint的解决方案抱怨所有文件中缺少某些内容,以便为所有文件添加一行......这是一个糟糕的建议. (2认同)

sta*_*ton 31

正如昆汀所说,这是一个/*global*/指令.

这是一个例子(把它放在文件的顶部):

/*global var1,var2,var3,var4,var5*/
Run Code Online (Sandbox Code Playgroud)

确保初始全局语句与其在同一行/*,否则它会中断.