次のJS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
利回り:
test.js: line 5, col 3, '$' is not defined.
JSHint 0.5.5を使用してリントした場合。何か案は?
JSHintの比較的最近のバージョンを使用している場合、一般的に推奨されるアプローチは、プロジェクトのルートに.jshintrcファイルを作成し、この構成をその中に配置することです。
{
"globals": {
"$": false
}
}
これは、$がグローバル変数であることをJSHintに宣言し、falseはそれがオーバーライドされるべきではないことを示します。
.jshintrcファイルは、JSHintの実際の古いバージョン(2012年の元の質問のようなv0.5.5など)ではサポートされていませんでした。 .jshintrcファイルを使用できない、または使用したくない場合は、スクリプトファイルの先頭にこれを追加できます。
/*globals $:false */
JSHintオプションページ ..にあるように、「jquery」jshintオプションの短縮形もあります。
.jshintrcに2行追加することもできます
"globals": {
"$": false,
"jQuery": false
}
これはjshintに2つのグローバル変数があることを伝えます。
必要なことは、"jquery": true
に.jshintrc
を設定することだけです。
jquery
このオプションは、jQuery JavaScriptライブラリによって公開されるグローバルを定義します。
ここにあなたの.jshintrcに入れる小さな幸せなリストがあります
時間の経過とともにこのリストに追加します。
{
// other settings...
// ENVIRONMENTS
// "browser": true, // Is in most configs by default
"node": true,
// others (e.g. yui, mootools, rhino, worker, etc.)
"globals": {
"$":false,
"jquery":false,
"angular":false
// other explicit global names to exclude
},
}
WebStorm、PyCharm、RubyMine、IntelliJ IDEAなどのIntelliJエディターを使用している場合:
[ファイル]、[設定]、[JavaScript]、[コード品質ツール]、[JSHint]の[環境]セクションで、[jQuery]チェックボックスをクリックします。
通常の「JSHintグローバルをオフにする」ことを推奨する代わりに、この問題を解決するために モジュールパターン を使用することをお勧めします。これにより、コードが「含まれたまま」になり、パフォーマンスが向上します(Paul Irishの 「Jqueryについて学んだ10のこと」 に基づいています)。
私はこのようなモジュールパターンを書く傾向があります:
(function (window) {
// Handle dependencies
var angular = window.angular,
$ = window.$,
document = window.document;
// Your application's code
}(window))
これらの他のパフォーマンス上の利点を得ることができます(詳細は こちら で説明):
window
オブジェクト宣言も縮小されます。例えばwindow.alert()
はm.alert()
になります。window
オブジェクトの1つのインスタンスのみを使用します。window
のプロパティまたはメソッドを呼び出すときに追跡し、スコープチェーンの高コストなトラバーサルを防ぎます。 window.alert()
(高速)対alert()
(低速)パフォーマンス。オンラインJSHint実装 を使用しているときにこのエラーを修正するには:
IntelliJエディターを使用している場合は、
たとえば、console:false
など、何でも入力できます。これは、リスト(.jshintrc)にもグローバルとして追加されます。