次の 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オプションもあります..
あなたがする必要があるのは"jquery": true
、あなたの.jshintrc
.
JSHintオプション リファレンスに従って:
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()
(低速) パフォーマンスなどを防ぎます。IntelliJ エディターを使用している場合は、
たとえば、何でも入力できconsole:false
、それがリスト (.jshintrc) と同様にグローバルに追加されます。
オンライン JSHint 実装を使用しているときにこのエラーを修正するには: