2012-03-08 29 views
91

嗨我有3個JavaScript文件。JSLint:在它被定義之前被使用

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

在file1.js我

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

我得到 'jQuery的' 被使用之前的錯誤它被定義了。 和'文檔'是在它被定義之前使用的。

我該如何安全地擺脫此警告。

如果我做

var document = document || {}; 

然後在我的utility.js如果使用它,它會在IE零和確定在Firefox。

這是最好的解決方案是什麼?

+0

[JS Lint:'快捷方式'在被定義之前使用過]的可能重複(http://stackoverflow.com/questions/8134049/js-lint-shortcut-was-used-before-it-was-defined )。另外,請確保您在選項中選擇了*假設瀏覽器*。 – 2012-03-08 16:33:02

+0

@ChunpingWang注意到你仍然活躍於SO,這個問題缺少一個被接受的答案。這些答案中的任何一個是否缺少使其可接受的東西?看起來像昆汀的答案會按問題解決問題。任何額外的信息需要回答你的問題? – ruffin 2015-03-11 16:33:57

回答

167

the documentation

的JSLint還識別/ * *全球/指令,可以指示JSLint的是,在該文件中使用的變量在其他文件中定義。評論可以包含逗號分隔的名稱列表。每個名稱可以有選擇地跟一個冒號和true或false,true表示變量可以被這個文件賦值,false表示不允許賦值(這是默認值)。該指令尊重功能範圍。

某些全局變量可以爲您預定義。選擇「假定瀏覽器(瀏覽器)」選項來預定義由Web瀏覽器提供的標準全局屬性,例如document和addEventListener。

例子:

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

注意:你不能在'global'之前放一個空格,所以'/ * global var,var2 * /'不起作用。'/ * global var,var2 * /'可以工作 – radixhound 2012-07-27 20:15:42

+4

複數是等效的,並且工作得很好:'/ * globals * /'並且在添加變量列表時也更有意義 – 2012-08-02 13:40:05

+2

所以JSLint的解決方案抱怨所有缺少的東西你的文件將它添加到你的所有文件中...這是個糟糕的建議。 – Cerin 2016-02-19 21:50:41

29

至於昆汀說,有一個/*global*/指令。

下面是一個例子(把這個在文件的頂部):

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

確保初始全局聲明是在同一行/*,否則它打破。

相關問題