我一直想知道的简单问题。
我从角度开始没有香草javascript背景我很确定这是,但有时我看到javascript文件有:
(function() {
'use strict';
....
})();
在文件的开头和结尾处:
(function() {
'use strict';
angular.module('asdf', []);
angular.controller('asdf' function(){.....})
})();
我不使用它,而且一切运行正常。所以我的问题是将javascript文件包装在其中有什么好处吗?
答案 0 :(得分:4)
所以,你正在看的是一个固定调用的匿名函数。
基本上,使用了这种“模式”,因为如果你没有使用它,你就会在全局命名空间中运行javascript开箱即用,这可能会导致包括第三方库在内的不必要的问题/ plugins或你写的其他模块。更多洞察here,there或here
答案 1 :(得分:0)
围绕它的匿名IIFE会导致变量位于新范围内,而不是默认范围,而浏览器中的默认范围是全局的。有关详细信息,请参阅:What is the (function() { } )() construct in JavaScript?。
'use strict';
激活IIFE中的严格模式,这意味着JavaScript中的某些边缘情况将表现不同(EG。抛出错误而不是奇怪的行为)。有关严格模式的详细信息,请查看MDN article。