浅谈JS闭包

了解闭包
闭包的条件
函数a内部直接或者间接返回一个函数b,函数b内部使用着函数a的私有数据,函数a外部有变量引用这函数b,并且形成了一个不会销毁的函数空间。

function a() {
      // 这个 num 变量就是函数 a 的私有变量
      var num = 100
      return function b() {
        console.log(num)
      }
    }
    // res 接受的是 a 函数执行以后的返回值
    // res 接受的就是函数 a 内部返回的一个复杂数据类型(函数b)
    // 导致函数 a 的执行空间不会销毁
    var res = a()
    // 从现在开始, res 随时可以是一个 函数a 里面返回的 函数b
    // res 随时可以调用
    res()
    // 当 res 调用的时候, 打印 num
    // 打印出来的就是 a 函数内部的私有变量 num 的值

在这里插入图片描述
闭包空间:
我们把那不会销毁的a函数的执行空间叫做闭包空间,把函数a里面返回的函数b叫做函数a的闭包函数。

闭包的概念:
闭包就是一个函数引用另一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。

闭包的特点(优缺点)
1.延长了变量的生命周期
优点:执行空间不销毁,变量也不会销毁
缺点:执行空间不销毁,会一直存在内存中
2.可以访问函数内部的私有变量
优点:可以利用闭包函数访问函数内部的私有变量
缺点:执行空间一直占用内存
3.保护私有变量(所有函数的特点)
优点:保护私有变量不被外界访问
缺点:如果想要访问,必须利用闭包函数

闭包函数的致命缺点:
因为当一段内存空间中有一个不会被销毁的东西一直存在,那么就会出现内存占用。如果存在过多, 就会导致内存溢出,那么结果就会造成内存泄漏。

闭包的作用:
1.当你需要延长变量的声明周期的时可以使用闭包函数
2.你需要访问某一个函数内部的私有数据的时可以使用闭包函数
(注意:如果能用其它方法解决,就尽量不要使用闭包。)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值