web-dev-qa-db-ja.com

JSHintを使用して、「これ」と厳格モードに関する警告を無効にする方法は?

私はAngularJS(v1.5)を使用してWebアプリを作成しているため、いくつかのコントローラーがあり、それらのコントローラーでは、次のように宣言することがよくあります。

function myController($someDirectives, ...){
    var ctrl = this;
    // My code
}

問題は、コードをJSHintすると、コントローラで宣言されているすべての 'this'に対して次の警告メッセージが表示されることです。

ストリクトモード関数が関数呼び出しを使用して実行される場合、その 'this'値は未定義になります。

私は.jshintrcファイルで"strict":false。特にこのメッセージを無効にする方法を知っている人はいますか?

前もって感謝します。

17
NathanL

.jshintrcファイルに構成を設定する

{
  "validthis": true // Tolerate using this in a non-constructor 
}
22
p0k8_

いつでもコードブロックで jshint options をオーバーライドできます。

/* jshint validthis: true */
9
Cmag

私は同じ問題を抱えていましたが、非常に似た環境_angular 1.5.5_は常に同じlint警告を受け取ります:

ストリクトモード関数が関数呼び出しを使用して実行される場合、その 'this'値は未定義になります。

コンポーネントのメイン関数の名前を大文字で変更したため、警告が消えた

function MyController($someDirectives, ...){

2
Builo

同じ問題が発生しています。 「 間接呼び出し 」を「関数呼び出し」ではなく、問題の関数で実行しています。「this」は関数本体で何度も参照されています。

私の場合、スクリプト全体をスキャンする前にjsHintが終了するほど多くの「エラー」が発生していました。

これを回避するには、これをスクリプトファイルの先頭に配置します。

/*jshint maxerr: 10000 */

エラーは抑制されませんでしたが、少なくともスクロールして、jsHintによるスクリプト全体の分析を確認できました。

1
Lonnie Best