js 闭包

闭包:函数的AO通过scope chain 相互连接起来,使得函数体内的变量都可以保存在函数的AO,这样的特性称为“闭包”。
闭包的产生:当一个嵌套的内部(子)函数 引用了 外部函数 的 变量或函数 时就产生了闭包

闭包的危险:
    函数执行完后,函数内的局部变量没有释放,占用内存时间会变长
    会造成原有AO不释放,产生内存泄漏
    解决方法
        及时释放:f=null  让内部函数成为垃圾对象
闭包的应用:
    实现公有变量
    缓存存储结构
    封装,实现属性私有化
    模块化开发

1.使用函数内部的变量在函数执行完后,任然存活在内存中(延长了局部变量的生命周期)
2.让函数外部可以操作 到 函数内部的数据(变量/函数)
问题:函数执行完后,函数内部声明的局部变量是否还存在?
    一般不存在,存在于闭包中的变量才可能存在
          在函数外部能直接访问函数内部的局部变量?
    不能,可以通过闭包操作数据
例:
function fn1(){
     //私有数据
     var a=2;
    function fn2(){
        a++;
        console.log(a);
     }
     //向外暴露的函数
     return fn2;
}
var f = fn1();
f(); //3
f(); //4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值