闭包:简单的理解为函数中嵌套函数在返回函数;(闭包javascript 是最强大的特征之一,它允许函数访问局部作用域之外的函数。)
例如一下的例子:function outer () {
var i = 5;
function inner() {
console.log(++i);
};
return inner;
}
var result = outer();
result();
console.log("another handle")
result();
之下是执行的结果:
function outer () {
var i = 5;
function inner() {
console.log(++i);
};
return inner;
}
var result = outer();
result();
console.log("another handle")
result();
另一个案例:
function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000
闭包的优点:
可以读取函数内部的变量(相当于扩大了作用域)
闭包的缺点:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包;