闭包

什么是闭包?

首先,闭包可以理解为一个函数。
闭包是怎么产生的呢?当一个作用域可以访问另一函数的局部变量时,就会产生闭包现象;
而被访问的局部变量所在的函数叫做闭包函数。

闭包有什么用?

  • 延伸了局部变量的作用范围
    一般函数执行完后,函数内部的局部变量会被销毁,但是由于闭包,使得局部变量的寿命延长了;同时,我们可以在函数以外的地方使用局部变量,所以闭包延伸了局部变量的作用范围
  • 可以避免全局变量的污染
    例如我们可以使用IIFE形成一个闭包,使这个函数变成一个独立的模块,避免变量重名的影响

闭包有什么缺点?

虽然闭包也有其作用,但是我们在做项目优化的时候,总是强调要避免闭包的使用,这是为什么呢?
闭包的缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露

来一个案例看看闭包的使用

实现li列表的点击事件

const lis = document.getElementsByTagName('li')
for(var i = 0; i < lis.length; i++) {
  // 使用闭包
  (function(i) {
    lis[i].onclick = function() {
       console.log(lis[i].innerHTML)
    }
  })(i)
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容