【闭包】闭包知识点总结

一、什么是闭包?

——官方解释:

一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域

——简单解释:

👉 闭包=内层函数可以引用的外层函数的变量

——闭包优势

可以保护内部变量,不让外部进行修改,实现数据的私有

简单案例如下:

test(){
  var a=1
  function fn(){
  console.log(a)
  }
  fn()
}

test()

二、闭包注意点

1.闭包一定有return吗?

答案是否定的,像我们上面的案例便没有使用。

2.什么时候用到return?

外部如果想使用闭包的变量,则需要return

test(){
  var a=1
  return function(){
  console.log(a)
  }
 
}

const fn=test()

fn()

3.闭包的使用场景

现在我们想统计调用函数的次数。

普通写法:

var a=0
function(){
  a++
  console.log(`函数调用次数为${a}`)
}

但是这样写有一个问题,当我们改变外部变量例如,令a=100,调用次数就会被影响,导致数据混乱,怎么才能不让外面修改的数值影响内部运行,就可以采用闭包的方式:


function test(){
  var a=0
  a++
 return function(){
    console.log(`函数调用次数为${a}`)
} 
}

const fn=test()

fn()

4.闭包内存泄漏

分析如何造成内存泄漏:

1、result 是一个全局变量,代码执行完毕不会立即销毁

2、result 使用fn函数

3、fn用到 fun 函数

4、fun 函数里面用到 count

5、count 被引用就不会被回收,所以一直存在

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值