2017-02-09 29 views
2

我正在重構一箇舊的AngularJS 1.3項目。其中一件事我注意到的事情是誰做這個的人開始AngularJS代碼的每一個文件:在每個文件中使用「function()'use strict'」有什麼好處?

(function() { 
'use strict'; 

    angular.module('app').factory('Employees', ['$http', function($http) { 
    // angular code removed 
    }]); 

})(); 

是否有任何好處使用功能()「使用嚴格」的每一個文件的代碼?對我來說,感覺就像在每個文件中浪費了3行。這是否有一個標準/最佳實踐?

+0

我知道什麼是 '使用嚴格' 呢。但我想找到一種方法,只使用「嚴格使用」而不使其成爲全球使用者。 – Stefan1991

+0

另請參見[爲什麼'使用嚴格'通常在IIFE(而不是在腳本的頂部)?](http://stackoverflow.com/questions/38670872/why-is-use-strict-usually-after 「-an-iife-than-at-the-the-top-of-a-script) – Bergi

+0

」*只使用'use strict'而不使其成爲全局。*「正是你的代碼所做的,它使得*模塊*嚴格。 – Bergi

回答

0

如果你把'use strict';放在IIFE之外,你可以使它成爲全球性的。

這意味着您可能無法控制的代碼(例如其他庫)不嚴格兼容可能會導致問題。

就像變量的作用域,你只是只把它所有的IIFE

+0

但是我認爲圖書館在嚴格模式下運行時會遇到其他問題... – Bergi

0

使用use strict劃定範圍內的代碼的上下文中'use strict'幫助您防止封鎖和變量的作用域的問題。

例如,如果你不期而遇設置一個全局變量 - 通過不忘補充var關鍵字在for循環,use strict模式將捕捉到它並消毒在這種情況下。

(function(){ 
 
    for (i = 0; i < 5; i++){ 
 
    } 
 
    console.log(i); 
 
})();
.as-console-wrapper { max-height: 100% !important; top: 0; }

(function(){ 
 
    'use strict'; 
 
    for (i = 0; i < 5; i++){ 
 
    } 
 
    console.log(i); 
 
})();
.as-console-wrapper { max-height: 100% !important; top: 0; }

相關問題