次の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
ページに追加しましたか?