2017-02-09 27 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; }

相关问题