闭包的定义
闭包就是能够读取其他函数内部变量的函数
闭包的特性
封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口;
持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在。
闭包的优缺点
缺点:由于闭包携带包含它函数的作用域,因此比其他函数占用的内存更多。
优点:减少创建全局变量 减少传递给函数的参数量 封闭性
闭包有如下应用特征:
1.局部变量:在函数中定义有共享意义的局部变量(定义成全局变量会造成全局污染);
2.内嵌函数:在函数中申明有内嵌函数,内嵌函数对函数中的局部变量进行访问;
3.外部使用:函数向外返回此内嵌函数,外部可通过此内嵌函数持有并访问申明在函数中的局部变量,而此变量在外部是通过其他路径无法访问的;
闭包的结构
function a(){
var value = 1; // 局部变量
function b(){ //内嵌函数
alert(value );
}
return b; // 返回内嵌函数
}
var c = a();
c(); // 外部使用
根据定义a函数里面的b函数叫闭包,但是要获取到这个b函数 就必须在a函数里面返回b函数。
上面c函数指向的就是这个b函数。
调用c函数就可以弹出a函数里面的局部变量value的值。
网友评论