匿名闭包
匿名闭包是很常用的代码隔离方式,声明匿名对象并立即执行。匿名函数中声明的变量和方法以及匿名函数本身不会污染到函数体外,同时匿名函数的调用形成一个闭包,使函数体内可以使用函数体外声明的变量和方法。
(function () {
// ... all vars and functions are in this scope only
// still maintains access to all globals
}());
今天看了一个文章 原文 http://web.jobbole.com/85883/
这个立即执行函数 和闭包有什么关系呢
是立即执行函数中包含一个全局作用域中的一个函数的引用 所以就形成了闭包么?这么理解对么
还是说文中的解释 是错误的?
匿名函数和闭包没有直接关系。能用匿名函数实现闭包的地方,一定也能用命名函数实现。
闭包的本质在于“闭”和“包”,即把一些变量封闭起来,使其它程序访问不到,同时把这个封闭的东西打成包甩出来,让大家可以直接用这个包(函数)。最典型的实现之一是对象(或类)的私有成员,如
匿名函数通常只是用于给成员赋值,比如上例中的
getName
和setName
;也有可能用于立即执行函数,比如你的那段代码,这会将全局变量局部化,避免全局污染。闭包常常会和匿名函数一起使用,但他们之间并没有密不可分的关系。