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でアクティブであり、この質問には受け入れられた回答が欠けていました。これらの回答のいずれかを受け入れられるようにするために必要な何かが欠けていますか?質問されたようにクエンティンの答えが問題を解決するようです。質問に答えるために必要な追加情報はありますか?
ruffin 2015年

回答:


169

ドキュメントから

JSLintは、このファイルで使用される変数が他のファイルで定義されたことをJSLintに示すことができる/ * global * /ディレクティブも認識します。コメントには、コンマで区切られた名前のリストを含めることができます。各名前の後にはオプションでコロンを付けることができ、trueまたはfalse、trueは変数がこのファイルによって割り当てられることを示し、falseは割り当てが許可されないことを示します(デフォルト)。ディレクティブは関数のスコープを尊重します。

一部のグローバルは事前定義できます。「ブラウザーを想定する(ブラウザー)」オプションを選択して、ドキュメントやaddEventListenerなどのWebブラウザーによって提供される標準のグローバルプロパティを事前定義します。

例:

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

25
注:前にスペースを入れることはできないglobalため、/* global var, var2 */機能しません。/*global var, var2*/作品
基数ハウンド2007

4
Pluralは同等であり、同様に機能します。/*globals */変数のリストを追加する場合にも意味があります
Robert Koritnik

2
JSLintがすべてのファイルに欠けているものについて文句を言うソリューションは、すべてのファイルに行を追加することです...これはひどいアドバイスです。
セリン2016

@Cerin —いいえ、定義を見つけることができない変数を使用することについてJSLintが不平を言う解決策は、別のファイルで定義したことを伝えることです(たとえば、変数名にタイプミスをするのではありません)。後でプログラムが壊れます)。
クエンティン

1
@Quentin、はい、それを修正するには、すべての単一ファイルで「jQueryについて伝える」必要があります。それは、何の利益ももたらさない何かのための膨大な作業です。JSLintでそのチェックを無効にすることもできます。
Cerin、2016

30

クエンティンが言うように、/*global*/指令があります。

次に例を示します(これをファイルの先頭に置きます)。

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

最初のグローバルステートメントがと同じ行にあることを確認してください/*

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.