闭包是一个拥有很多变量和绑定了这些变量环境的表达式(通常是一个函数)。
下面fn1就是一个闭包,可以访问外层变量。闭包作为返回值返回时,外层作用域将一直保留。
function fn(){
var a=1;
function fn1(){
alert(++a);
}
return fn1;
}
var func=fn();
func();//弹出2
闭包优缺点:
优点:利于封装,可以访问局部变量;
缺点:浪费内存,容易造成内存泄漏。
闭包是一个拥有很多变量和绑定了这些变量环境的表达式(通常是一个函数)。
下面fn1就是一个闭包,可以访问外层变量。闭包作为返回值返回时,外层作用域将一直保留。
function fn(){
var a=1;
function fn1(){
alert(++a);
}
return fn1;
}
var func=fn();
func();//弹出2
闭包优缺点:
优点:利于封装,可以访问局部变量;
缺点:浪费内存,容易造成内存泄漏。