概念
闭包是能够访问其他函数内部变量的函数。常用的创建方式是子函数。
/**
* 通过子函数创建闭包
*/
function outer() {
var name = 'arvin';
return function inner() {
console.log(name);
};
}
var a = outer(); // a是闭包,它能够访问outer的内部变量name
a();
特点
被闭包使用的变量将不会被自动回收。
function a() {
var n = 0;
function add() {
n++;
console.log(n);
}
return add;
}
var a1 = a(); //注意,函数名只是一个标识(指向函数的指针),而()才是执行函数;
a1(); //1
a1(); //2 第二次调用n变量还在内存中
注意! 下面的代码因为一直重新创建函数,返回值一直都是 1
a()(); // 1
a()(); // 1