闭包是什么?

2018/10/28/ 看阮一峰博客有感

闭包就是能访问其他函数内部变量的函数,理解这句话可以从以下几点开始。


  1. 闭包为什么是函数?
    解释这点需要先了解 JavaScript 语言特有的一种结构--链式作用域,即为,子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象是可见的,反之则不成立。

    了解这点后,可做以下推论,外部无法访问父函数的局部变量,而子函数可以访问父函数的局部变量,只要将子函数作为返回值,就可以在外部间接访问到父函数的局部变量了。

    因此可以把闭包简单理解成"定义在一个函数内部的函数"。

    所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。


  1. 闭包的作用

    一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

    父函数将子函数作为返回值,再将子函数赋值给一个变量,所以子函数会存在于内存中,而子函数依赖于父函数存在,所以父函数也会存在于内存中,也就不会被垃圾回收机制回收。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分布式账本 分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它...
    d719f6b05f08阅读 2,607评论 0 0
  • 现在就算你难过到哭 他也不会摸摸你 只能想着他很疼顾不上你 很多时候 刚开始两个人在一起都是因为脆弱的时候对方出现...
    95fcfff80434阅读 1,517评论 2 0
  • 过了一个漫长又阴冷的寒冬,终于迎来了卢村的晴天。欧洲的冬季太漫长了,让人一直处于负能量中。但还好,终于等来了一...
    Sylvie小乔阅读 1,778评论 0 0
  • 在这边有一项小组报告要做,一个小组就一个主题,搜集资料,制成文本资料,并且需要在同学面前讲述,给大家做报告,因此也...
    小i书阅读 1,391评论 0 0
  • 世界上寿命最长的鸟类,一生的年龄可达70岁。可是很少有人知道,要活这么长的寿命,在其生命的中期必须做出艰难却重要的...
    超越凡尘118阅读 3,916评论 1 4

友情链接更多精彩内容