前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是闭包?为什么使用闭包?闭包的缺点?

什么是闭包?为什么使用闭包?闭包的缺点?

作者头像
TimothyJia
发布2019-11-12 14:26:11
1.8K0
发布2019-11-12 14:26:11
举报

闭包:即重用一个变量,又保护变量不被污染的一种机制。

为什么使用闭包 : 全局变量和局部变量都具有不可兼得的优缺点。

  全局变量: 优: 可重用, 缺: 易被污染。

  局部变量: 优: 仅函数内可用,不会被污染。

       缺: 不可重用!

何时使用: 只要即重用一个变量,又保护变量不被污染时。

如何: 3步:

   1. 用外层函数包裹要保护的变量和内层函数。

  2. 外层函数将内层函数返回到外部。

   3. 调用外层函数,获得内层函数的对象,保存在外部的变量中——形成了闭包。  

闭包形成的原因: 外层函数调用后,外层函数的函数作用域(AO)对象无法释放,被内层函数引用着。

闭包的缺点:

  比普通函数占用更多的内存。

  解决:闭包不在使用时,要及时释放。

  将引用内层函数对象的变量赋值为null。

代码语言:javascript
复制
<script>

//1. 用外层函数包裹要保护的变量和内层函数

  function outer(){
    var i=1;
  //2. 外层函数返回内层函数对象到外部
    return function(){
      console.log(i++);
    }
  }
  //3. 调用外层函数获得内层函数对象
  var getNum=outer();
  //getNum:function(){ console.log(i++); }
  getNum();//1
  getNum();//2
  i=1;
  getNum();//3
  getNum();//4
</script>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档