2013-07-21 12 views
7

JSLintは私に "厳密な違反"エラーを与えますが、グローバルスコープから隠す関数の中で "this"コンテキストを使用します。JSLintはこの機能で厳しい違反エラーを引き起こすのはなぜですか?

function test() { 
    "use strict"; 
    this.a = "b"; 
} 

私は、Webstormに組み込まれているJSLintパーサーを使用します。

+0

このコードをJSLint.comに貼り付けると、すべてのデフォルトオプションにエラーが発生しません。関数名を変更するとエラーを取り除いたエラーの内容はどうでしたか? – ruffin

+0

私はWebstormを使用しています。おそらくJSLintの古いバージョンを持っています –

+0

あなたのライブコードに 'test'という名前の2つの関数がありますか?それから、ケースを変えることでそれらが違うでしょう。 – ruffin

答えて

10

これは、JSLintが関数をコンストラクタとして認識しないためです。慣例により、大文字を使用する必要があります。

function Test() { 
    "use strict"; 
    this.a = "b"; 
} 
+4

http://jshint.comをご覧ください。これは、仕様ではなくCrockfordの意見によって制御されるオプションにあなたをロックするのではなく、より多くの制御を提供します。あなたが実行した問題は、オブジェクトをメソッドとして宣言する関数を宣言している場合に、非コンストラクタでも発生します。 (例えば、 'function test(){...}'の後に 'obj.test = test;'があったとしたら、 'test'プロパティに適切な名前の関数がありますが、 IEが持つ問題のために関数式と呼ばれる)。 –

関連する問題