使用“(function(){.... [js code here] ......})();”包装角度javascript文件有什么好处吗?“

时间:2016-05-04 03:44:12

标签: javascript angularjs

我一直想知道的简单问题。

我从角度开始没有香草javascript背景我很确定这是,但有时我看到javascript文件有:

(function() {
   'use strict';
   ....
})();

在文件的开头和结尾处:

(function() {
   'use strict';

   angular.module('asdf', []);
   angular.controller('asdf' function(){.....})
})();

我不使用它,而且一切运行正常。所以我的问题是将javascript文件包装在其中有什么好处吗?

2 个答案:

答案 0 :(得分:4)

所以,你正在看的是一个固定调用的匿名函数。

基本上,使用了这种“模式”,因为如果你没有使用它,你就会在全局命名空间中运行javascript开箱即用,这可能会导致包括第三方库在内的不必要的问题/ plugins或你写的其他模块。更多洞察heretherehere

答案 1 :(得分:0)

围绕它的匿名IIFE会导致变量位于新范围内,而不是默认范围,而浏览器中的默认范围是全局的。有关详细信息,请参阅:What is the (function() { } )() construct in JavaScript?

'use strict';激活IIFE中的严格模式,这意味着JavaScript中的某些边缘情况将表现不同(EG。抛出错误而不是奇怪的行为)。有关严格模式的详细信息,请查看MDN article