2013-11-11 20 views
21

Dưới đây là tập tin của tôi: app/scripts/controllers/main.jsjshint "sử dụng nghiêm ngặt" vấn đề

"use strict"; 

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

My Gruntfile.coffee có:

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"] 

Khi tôi chạy grunt, tôi nhận được:

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

Trả lời

46

Vấn đề là nếu bạn không sử dụng mẫu chức năng, nó sẽ áp dụng cho mọi thứ, chứ không chỉ là mã của bạn. Giải pháp cho điều đó là phạm vi use strict bên trong các hàm bạn kiểm soát.

Tham khảo câu hỏi này: JSLint is suddenly reporting: Use the function form of “use strict”.

Thay vì làm

"use strict"; 

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

Bạn nên làm

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

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

Đó là một trong hai điều đó hoặc gói mã của bạn trong một đóng cửa tự thực hiện, như dưới đây.

(function(){ 
    "use strict"; 

    // your stuff 
})(); 
+1

Nó thực sự là đúng cách để làm điều đó, nhưng làm thế nào để tôi nói với jshint để chỉ cần bỏ qua các cảnh báo? Tôi có một loạt các tệp .js hoạt động và tôi không muốn chỉnh sửa từng tệp. – svarog

+5

Bạn nên, bởi vì bạn có thể phá vỡ các thư viện bên ngoài nếu bạn không. – bevacqua

+1

'nó áp dụng cho tất cả mọi thứ, và không chỉ mã của bạn' - chỉ khi bạn đang ghép nối kịch bản của bạn với người khác. Nếu không, nó chỉ áp dụng cho mã của bạn. –

8

Thay đổi của tôi Gruntfile.coffee bao gồm globalstrict

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

"Tùy chọn này ngăn chặn cảnh báo về việc sử dụng chế độ nghiêm ngặt toàn cầu." Âm thanh như một băng trợ giúp chứ không phải là một giải pháp. –

+0

Đã một vài năm. Tôi có thể thấy các dự án yêu cầu "nghiêm khắc hoặc thoát ra" của các phụ thuộc của họ. –

Các vấn đề liên quan