質問

次の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 */

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

他のヒント

.jshintrcに2行を追加することもできます

  "globals": {
    "$": false,
    "jQuery": false
  }

これにより、Jshintは2つのグローバル変数があることを示しています。

あなたがする必要があるのは設定だけです "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
  },
}

WebStorm、Pycharm、Rubymine、IntellijのアイデアなどのIntellijエディターを使用している場合:

ファイル/設定/JavaScript/コード品質ツール/Jshintの環境セクションで、jQueryチェックボックスをクリックします。

通常の「jshintグローバルをオフにする」を推奨する代わりに、 モジュールパターン この問題を修正するため。それはあなたのコードを「含む」保持し、パフォーマンスを後押しします(Paul Irish'sに基づいて 「jqueryについて学んだ10のこと」).

私はこのようなモジュールパターンを書く傾向があります:

(function (window) {
    // Handle dependencies
    var angular = window.angular,
        $ = window.$,
        document = window.document;

    // Your application's code
}(window))

あなたはこれらの他のパフォーマンスの利点を得ることができます(もっと説明します ここ):

  • コードを模倣するとき、渡されます window オブジェクト宣言も削除されます。例えば window.alert() なる m.alert().
  • 自己執行匿名関数内のコードは、1つのインスタンスのみを使用します window 物体。
  • 電話をかけるときに追いかけます window プロパティまたは方法、スコープチェーンの高価な横断を防ぐ window.alert() (より速い)対 alert() (遅い)パフォーマンス。
  • 「名前のペース」と封じ込め(グローバルは悪です)を通じて、機能のローカル範囲。このコードを個別のスクリプトに分割する必要がある場合は、これらの各スクリプトのサブモジュールを作成し、1つのメインモジュールにインポートすることができます。

Intellij編集者を使用している場合

  • 設定/設定
    • JavaScript
      • コード品質ツール
        • jshint
          • 事前定義された(下部)、クリックします 設定

たとえば、何でも入力できます console:false, 、そしてそれをリスト(.jshintrc)にも追加します - グローバルとして。

使用するときにこのエラーを修正します オンラインJshint実装:

  • 構成](ページの中央の列の上部)をクリックします
  • 「jquery」を有効にする(下部の「想定」セクションの下)

おそらく次のことをしたいのですが、

const $ = window.$

糸くずのエラーを投げることを避けるため。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top