次のJS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
収量:
test.js: line 5, col 3, '$' is not defined.
JSHint 0.5.5を使用してリンクした場合。何か案は?
$ は、未定義です。
次の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オプションもあります。
/*global $:false, jQuery:false */。
/* global ... */ますか?私は通常、すべての関数を含むスクリプトを自分にインポートするmainため、1つずつ定義するのは面倒です...
あなたがする必要があるすべてはあなたので設定さ"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
},
}
通常の「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()(より遅い)のパフォーマンス)を回避します。"}(window))ます(あなたの例では "-jQueryとHighchartsでも問題がありました。)ファイルのグローバルを定義する以外に、変数をオフにする方法が見つかりませんでした。これはその後、目的に反し。
browser: trueはJSHintに、ブラウザー環境(windowは既に定義されている)が必要であることを伝えます。
オンラインJSHint実装を使用しているときにこのエラーを修正するには:
jquery.jsページに追加しましたか?