将angular javascript文件包装为“;(function(){..[js-code here]…})()&

Are there any benefits to wrapping angular javascript file with the "(function() { ....[js code here]...... })();"

本文关键字:js-code here angular function 包装 文件包 文件 javascript      更新时间:2023-09-26

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

我从没有香草javascript背景的angular开始,我很确定这就是事实,但有时我会看到javascript文件具有:

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

在文件的开始和结束处,如:

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

我不用它,而且一切都很好。所以我的问题是,将javascript文件封装在其中有什么好处吗?

因此,您看到的是一个即时调用的匿名函数。

基本上,使用这个"模式",因为如果你不使用它,你就在全局命名空间中工作javascript开箱即用,这可能会导致不必要的问题,包括第三方库/插件或你编写的其他模块。更多的见解在这里,那里或这里

围绕它的匿名IIFE会导致变量位于新的作用域中,而不是默认作用域,默认作用域在浏览器中是全局的。请参阅:JavaScript中的(function(){})()构造是什么?了解更多信息。

'use strict';激活IIFE内部的严格模式,这意味着JavaScript中的一些边缘情况将表现出不同的行为(例如抛出错误而不是奇怪的行为)。有关严格模式的更多信息,请参阅MDN文章。