js中闭包的理解

一、闭包是什么?

答:在一个外部函数内部定义了一个内部函数,并且内部函数可以引用外部函数的局部变量,那么这个函数就是一个闭包。

简单理解:闭包 = 内部函数 + 外部函数的变量

 简单的闭包代码:

function outer() {
	let count = 1
	function inner() {
		console.log(count)
    }
    inner()
}
outer()

二、闭包的用途/特点

  • 封装私有变量和方法
  • 让变量始终保持在内存中
  • 延长变量的生命周期

三、闭包的优点

  1. 可以减少全局变量的定义,避免全局变量的污染
  2. 能够读取函数内部的变量
  3. 在内存中维护一个变量,可以用做缓存

四、闭包的缺点

1.内存消耗: 

  • 闭包会使得函数中的变量和方法在函数执行结束后仍然占用内存,因为闭包中引用的外部变量不会被释放。如果闭包持有大量数据或者长时间存在,可能会导致内存占用过高,影响程序的性能。
2.性能问题
  • 由于闭包涉及作用域链的查找,访问闭包内部变量的速度可能比普通函数略慢。尤其是在频繁调用的情况下,闭包的性能表现可能会受到影响。

 3.可能导致内存泄漏

  • 闭包会使函数中的变量一直保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。【内存泄露:无用的变量一直在内存中,无法被释放】

   解决方法——使用完变量后,手动将它赋值为null; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

娃哈哈哈哈呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>