219

次の JS:

(function() {
  "use strict";

  $("#target").click(function(){
    console.log("clicked");
  });

}());

収量:

test.js: line 5, col 3, '$' is not defined.

JSHint 0.5.5 を使用してリントした場合。何か案は?

4

9 に答える 9

387

比較的新しいバージョンの JSHint を使用している場合、一般的に推奨される方法は、プロジェクトのルートに .jshintrc ファイルを作成し、この構成をその中に配置することです。

{
    "globals": {
        "$": false
    }
}

これは、$ がグローバル変数であることを JSHint に宣言し、false はそれをオーバーライドしてはならないことを示します。

.jshintrc ファイルは、JSHint の非常に古いバージョン (2012 年の元の質問のような v0.5.5 など) ではサポートされていませんでした。.jshintrc ファイルを使用できない、または使用したくない場合は、スクリプト ファイルの先頭に次のファイルを追加できます。

/*globals $:false */

JSHintオプションページに見られるように、省略形の「jquery」jshintオプションもあります..

于 2012-01-13T16:45:03.480 に答える
53

あなたがする必要があるのは"jquery": true、あなたの.jshintrc.

JSHintオプション リファレンスに従って:

jquery

このオプションは、jQuery JavaScript ライブラリによって公開されるグローバルを定義します。

于 2014-09-03T09:01:10.270 に答える
17

これは、.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
  },
}
于 2014-02-20T16:50:25.820 に答える
3

通常の「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()(低速) パフォーマンスなどを防ぎます。
  • 「名前空間」と包含による関数のローカル スコープ (グローバルは悪)。このコードを別々のスクリプトに分割する必要がある場合は、それらのスクリプトごとにサブモジュールを作成し、それらを 1 つのメイン モジュールにインポートすることができます。
于 2014-08-14T04:55:06.700 に答える
2

IntelliJ エディターを使用している場合は、

  • 環境設定/設定
    • Javascript
      • コード品質ツール
        • JSHint
          • 定義済み (下部)、[設定] をクリックします。

たとえば、何でも入力できconsole:false、それがリスト (.jshintrc) と同様にグローバルに追加されます。

于 2014-01-09T01:01:14.270 に答える
2

オンライン JSHint 実装を使用しているときにこのエラーを修正するには:

  • 「CONFIGURE」をクリックします(ページの中央の列の上部)。
  • 「jQuery」を有効にします(下部の「ASSUME」セクションの下)
于 2015-02-20T22:37:37.523 に答える