web-dev-qa-db-ja.com

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";
24
Shamoon

問題は、関数フォームを使用しない場合、コードだけでなくすべてに適用されることです。その解決策は、制御する関数内でuse strictをスコープすることです。

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

するのではなく

"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
})();
49
bevacqua

Gruntfile.coffeeglobalstrictを含むように変更しました

jshint:
    options:
        globalstrict: true
        globals:
            require: false
            module: false
            console: false
            __dirname: false
            process: false
            exports: false
8
Shamoon