Javascript 带AngularJS的自执行函数

Javascript 带AngularJS的自执行函数,javascript,angularjs,Javascript,Angularjs,在框架(如Angular)中使用自执行函数有什么好处 我不熟悉Angular,但到目前为止,我的理解是基于模块的设计提供了自执行功能所提供的大部分好处。我错过了什么?这只是风格问题吗 我真的很喜欢这种风格,但我想知道这样编写角度代码是否有好处,或者它是否主要是一种风格选择。这是一个观点问题。我在自执行函数上看到的主要优点是不创建全局变量。我从未见过这种有棱角的图案 在您给出的示例链接上,它似乎没有任何优势。角度变量无论如何都会存在于角度应用程序中,因此可以直接使用角度变量。作为一个模块,您可以在

在框架(如Angular)中使用自执行函数有什么好处

我不熟悉Angular,但到目前为止,我的理解是基于模块的设计提供了自执行功能所提供的大部分好处。我错过了什么?这只是风格问题吗


我真的很喜欢这种风格,但我想知道这样编写角度代码是否有好处,或者它是否主要是一种风格选择。

这是一个观点问题。我在自执行函数上看到的主要优点是不创建全局变量。我从未见过这种有棱角的图案

在您给出的示例链接上,它似乎没有任何优势。角度变量无论如何都会存在于角度应用程序中,因此可以直接使用角度变量。作为一个模块,您可以在不影响全局范围的情况下向其添加控制器


我喜欢很多自动执行的函数。但在这种情况下,我真的看不出它有什么优势。

主要是,它确保您的代码不在全局范围内声明,并且您声明的任何变量都保持在函数的范围内

在这种情况下,它还具有在一个位置声明运行代码所需的对象的好处。您可以在底部清楚地看到,
angular
Demo
对象被传入,而没有其他内容。如果代码没有包装在函数中,则必须扫描代码以查看依赖项是什么

就我个人而言,我更喜欢使用像这样的模块加载器,这有效地迫使你遵循这种模式。

丹尼尔,你说:“如果它主要是一种风格选择”。 我知道javascript中至少有两个例子,当“代码风格”不仅仅是偏好的问题,而且会导致不同的结果

分号是可选的吗?一点也不

$scope.test = function() {
    console.log('Weird behaviour!')
} //; let us comment it

(function() {} ()); //two functions seem to be independent
等于

$scope.test = function() {
    console.log('Weird behaviour!')
}(function() {} ()); //but without semicolon they become the one
另一个与自执行函数无关的“代码样式”示例:

var x = (function() {
   return  //returns undefined
   {};
}());

alert(x);

/*
that is why, I suppose, while writing javascript code,
we put function brackets in the following "code style":

function() { //at the same line
   return { //at the same line, this style will not lose the object
   };
}
*/
代码样式的形成是由此类意外结果决定的

最后但并非最不重要。 使用自执行函数:在函数调用时创建一个闭包,并将变量保持在本地

在函数调用时创建闭包。这就是为什么自执行函数如此方便的原因。正如Daniel正确地提到的,它是保持独立代码单元的好地方,这种模式称为模块模式。因此,当您从纯javascript移动到特定框架或反之亦然时,这种独立性使代码更改更加流畅。最好的情况是将模块移动到一个有角度的包装器中,然后重用它

因此,从一种技术到另一种技术的代码传输非常方便。但是,正如我所相信的,它并没有真正意义上的具体框架