Подтвердить что ты не робот

Jshint "использовать строгую" проблему

Здесь мой файл: 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";
4b9b3361

Ответ 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
})();

Ответ 2

Изменен мой Gruntfile.coffee, чтобы включить globalstrict

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