JSLint:在定义之前使用

IT技术 javascript undefined jslint
2021-03-03 19:52:05

嗨,我有 3 个 javascript 文件。

  • jQuery.js
  • 实用程序.js
  • 文件1.js

在 file1.js 我有

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

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

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

如果我做

var document = document || {}; 

然后在我的utility.js 中,如果它被使用,它在IE 中为空,在firefox 中正常。

对此的最佳解决方案是什么?

2个回答

文档

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

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

例子:

/*jslint browser: true*/
/*global $, jQuery*/
因此,JSLint 抱怨所有文件中缺少某些内容的解决方案是在所有文件中添加一行……这是一个糟糕的建议。
2021-04-24 19:52:05
Plural 是等价的,/*globals */也可以工作:并且在添加变量列表时也更有意义
2021-04-27 19:52:05
@Quentin,是的,你的修复要求你在每个文件中“告诉它关于 jQuery”。对于没有任何好处的事情来说,这是一项巨大的工作。您也可以简单地在 JSLint 中禁用该检查。
2021-05-06 19:52:05
@Cerin — 不,JSLint 抱怨你使用了一个找不到定义的变量的解决方案是告诉它你在另一个文件中定义了它(而不是,例如,在变量名中打错字这将在以后破坏您的程序)。
2021-05-07 19:52:05
注意:你不能在之前放一个空格global所以/* global var, var2 */不起作用。/*global var, var2*/作品
2021-05-14 19:52:05

正如昆汀所说,有一个/*global*/指令。

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

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

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