考虑到这两个选项:
1
(function(){
"use strict";
angular.module('someApp.controllers', [])
.controller("ctrl1", ['$scope', function($scope) {
....
}])
.controller("ctrl2", ['$scope', function($scope) {
....
}])
.controller("ctrl3", ['$scope', function($scope) {
....
}]);
})();
2
(function(){
angular.module('someApp.controllers', [])
.controller("ctrl1", ['$scope', function($scope) {
"use strict";
....
}])
.controller("ctrl2", ['$scope', function($scope) {
"use strict";
....
}])
.controller("ctrl3", ['$scope', function($scope) {
"use strict";
....
}]);
})();
这两者有什么区别吗?其中一个被推荐或被认为是Angular中的“更好的实践”?为什么呢?
答案 0 :(得分:1)
这两者之间有什么区别吗?
嗯,在第一个中,整个IIFE不仅在每个控制器上以严格模式运行
只要您不使用this
,只访问少数全局变量和属性并调用某些函数,这并不重要,但如果您在IIFE中犯了错误,则可能会有所帮助。
当然,为了获得更大的利益,写作更少,所以没有理由不使用它。
答案 1 :(得分:0)
第二个片段的唯一好处是IIFE上下文处于松散模式,全局变量可以在IIFE中作为this
访问。
对Angular来说并不是一个好处,因为它是客户端的,所以window
可以在松散模式下与this
互换使用。此外,对于IIFEs a
(function(window){
...
})(this);
构造通常用于相同的事情(也可以更好地缩小,但如果脚本在严格模式下用另一个IIFE包装,例如使用Babel时可能会导致麻烦)。