《Javascript高级程序设计》上说,所谓闭包是有权访问另一个函数作用域中的变量的函数。因此可以看出来,闭包是一个函数。创建闭包的方式,常用的是在一个函数里面创建另一个函数。
举个例子:
function a(){
var n = 0;
function inc() {
n++;
console.log(n);
}
inc();
inc();
}
a(); //控制台输出1,再输出2
闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗!另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样。