我用过
var app = angular.module('',[]); app.controller ...
angular.module('',[])。controller()
(function(){ var app = angular.module('',[]); })();
所有这些都有效。但我不明白第三个。这是什么(function() {})();
以及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)
angular.module('', []). controller() //<- correct
var app = angular.module('', []); app.controller
,因为它会创建一个全局变量“app”,这可能会混淆其他脚本,无论如何都是不必要的。
(function() { var app = angular.module('', []); })();
比#1好,但它是不必要的,因为闭包可以防止var app
被泄露,但它甚至没有在它的闭包中使用。
如果你要实例化(和使用!)变量,基本上你只需要function
闭包。