jshint「use strict」の問題 [重複] 質問する

jshint「use strict」の問題 [重複] 質問する

私のファイルは次のとおりです:app/scripts/controllers/main.js

"use strict";

angular.module('appApp')
  .controller('MainCtrl', ['$scope', function ($scope) {
    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];
  }]);

Gruntfile.coffeeのは:

jshint:
    options:
        globals:
            require: false
            module: false
            console: false
            __dirname: false
            process: false
            exports: false

    server:
        options:
            node: true
        src: ["server/**/*.js"]

    app:
        options:
            globals:
                angular: true
                strict: true

        src: ["app/scripts/**/*.js"]

を実行するとgrunt、次の結果が得られます。

Linting app/scripts/controllers/main.js ...ERROR
[L1:C1] W097: Use the function form of "use strict".
"use strict";

ベストアンサー1

問題は、関数形式を使用しないと、コードだけでなくすべてに適用されてしまうことです。その解決策は、use strict制御する関数内でスコープを設定することです。

この質問を参照してください:JSLintが突然報告します: 「use strict」の関数形式を使用してください

むしろ

"use strict";

angular.module('appApp')
  .controller('MainCtrl', ['$scope', function ($scope) {
    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];
  }]);

あなたがすべきことは

angular.module('appApp')
  .controller('MainCtrl', ['$scope', function ($scope) {
    "use strict";

    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];
  }]);

それか、以下のようにコードを自己実行クロージャでラップするかのどちらかです。

(function(){
    "use strict";

    // your stuff
})();

おすすめ記事