web-dev-qa-db-ja.com

Jshint.comには「use strict」が必要です。これは何を意味するのでしょうか?

Jshint.comはエラーを出しています:

36行目:var signin_found; 「use strict」ステートメントがありません。

70
user656925

Jsファイルの先頭に「use strict」を追加します(.jsファイルの1行目):

"use strict";
...
function initialize_page()
{
    var signin_found;
    /*Used to determine which page is loaded / reloaded*/
    signin_found=document.getElementById('signin_button');
    if(signin_found) 
{

Stackoverflowの別の質問で「use strict」の詳細:

JavaScriptで "use strict"は何をし、その背後にある理由は何ですか?

更新。

Jshint.comには何か問題があります。各関数内に「use strict」を指定する必要がありますが、ファイルごとにグローバルに設定できるようにする必要があります。

jshint.comはこれが間違っていると考えています。

"use strict";    
function asd()
{
}

しかし、何も問題はありません...

各関数に「use strict」を指定してください:

function asd()
{
    "use strict";
}
function blabla()
{
    "use strict";
}

それからそれは言う:

よくやった! JSHintはコードに問題を発見していません。

36
Czarek Tomczak

JSHintメンテナはこちら

JSHint(Webサイトで使用されるバージョン)では、コードで関数レベルの厳格モードを使用する必要があります。これをオフにするのは非常に簡単です。「コードが厳格モードでない場合に警告する」チェックボックスをオフにするだけです。

jshint.com screenshot

@Czarekが示唆するように、グローバルストリクトモードを許可しないのはなぜですか?ページで使用されているJavaScriptファイルの一部は、厳密モード互換ではない可能性があり、グローバル厳密モードはそのコードを破壊します。グローバルストリクトモードを使用するには、globalstrictというオプションがあります。

お役に立てば幸いです!

32
Anton Kovalyov

Jshintは、ファイル全体への誤った割り当ての厳格モードから「保護」しようとしているからだと思います。また、コードを匿名関数でラップするか、何らかの名前空間を使用することも適切です。

例えば両方とも厳格モードで機能します:

(function() {

   "use strict";

   function foo() {
        .....
   }

   function bar() {
        .....
   }
}());
10
Kornel Dylski

JSlintでは、コードを「厳格モード」にする必要があります

これを行うには、コードの先頭に"use strict";を追加するだけです。

4
MikeD