AngularJS - 编写' angular.module'的最佳方式?

时间:2016-03-29 14:04:43

标签: angularjs

我用过

  1. var app = angular.module('',[]); app.controller ...

  2. angular.module('',[])。controller()

  3. (function(){ var app = angular.module('',[]); })();

  4. 所有这些都有效。但我不明白第三个。这是什么(function() {})();

    以及3中最好的。谢谢。

3 个答案:

答案 0 :(得分:4)

John Papa的角度风格指南解释了为什么要使用#3 - Immediately Invoked Function Expressions

  

为什么?:IIFE从全局范围中删除变量。这有帮助   防止变量和函数声明的生存时间超过   预计在全球范围内,这也有助于避免变数   碰撞。

     

为什么?:当您的代码缩小并捆绑到单个文件中时   部署到生产服务器,您可能会发生冲突   变量和许多全局变量。 IIFE保护您免受两者的伤害   通过为每个文件提供变量范围来实现这些目的。

答案 1 :(得分:1)

它叫做自动执行功能,你可以从这里看到它;

What is the purpose of a self executing function in javascript?

答案 2 :(得分:1)

2是正确的

angular.module('', []). controller() //<- correct

不建议使用

var app = angular.module('', []); app.controller,因为它会创建一个全局变量“app”,这可能会混淆其他脚本,无论如何都是不必要的。

(function() { var app = angular.module('', []); })();比#1好,但它是不必要的,因为闭包可以防止var app被泄露,但它甚至没有在它的闭包中使用。

如果你要实例化(和使用!)变量,基本上你只需要function闭包。

相关问题