1 可以使函数拥有私有变量
刚刚看到一个例子,例子来自菜鸟教程
var add = (function () {
var counter = 0;
return function () {
return counter += 1;
}})();
add();
add();
add(); // 计数器为 3
实例过程说明:
首先声明了一个自调用函数(不明白什么是自调用函数的童鞋可以去我上一篇文章看一下,是转载的)
自调用函数的返回值赋值给了add,注意这里返回值是一个闭包函数,所以此时add = funtion(){return counter+=1;}
因为js中函数允许访问上一级作用域的变量,而这个匿名闭包函数的上一级作用域是自调用函数,其中包含counter;在此基础上counter+=1;这里的counter就相当于一个私有变量,外部无法访问,
理解说明:闭包是一种设计原则,它的目的是为里让用户在不了解内部结构的情况下就可以使用,继续用上面的实例说明可以理解为:用户想要计数,那就直接调用add(),而不用考虑add是如何实现的,这就是闭包的思想,关于闭包的思想,这里有一篇文章写的比较好http://www.cnblogs.com/xiaotie/archive/2011/08/03/2126145.html,供大家参考