【JS基础整理—No.06】闭包

👸🏾 写在前面:我试图用执行上下文和作用域这些底层原理来对闭包这个概念进行理解,所以我先复习了,执行上下文,又搞清楚了作用域是怎么一回事,最后再回来解释一波闭包。

其实闭包这个概念,在刚开始学习前端随便翻面经的时候我就见过它,三个月前也认真地学习过,做了好些代码阅读题,知道了它是“内部函数引用外部函数的变量使常驻内存”,但其实也只是停留在概念上。后来慢慢地这个地方用到了闭包,那个原来也有闭包,对他的理解不是浮在表面,再到现在去想要理解它的底层实现原理。

好像一直在学习又好像什么新的内容都没有学习,我不知道我是把简单的问题复杂化了,还是这个问题就值得我去花费时间研究。总之,慢慢学习,慢慢探索吧,只要一直在学总不会出错。

 一、基本概念

先复盘一下你只要听过闭包就一定会看到的解释

定义:当一个嵌套的内部函数引用了外部函数的变量时,就产生了闭包。

闭包是一个容器,也可以理解为一个对象。(闭包永远跟着内部函数)

产生条件:函数嵌套;内部函数引用外部函数的数据

作用:延长外部函数局部变量的生命周期;从外部访问函数内部的局部变量

缺点:常驻内存,不及时清除可造成内存溢出

如何避免缺点:能不用就不用;及时清除闭包

举个栗子🌰:

function fun(){
	var num=123;
    var a='aa';		//a并不在闭包里面
    function fun2(){    //题外话:如果你看过前面文章作用域那道基础面试题注意区别一下,题目相似,但闭包和作用域考察侧重点不同。
function fun(){
	var n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值