概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域。
简单理解: 闭包 = 内层函数 + 引用的外层函数变量
1 | function outer(){ |
这段代码能在浏览器显示出闭包结构。
通常会再使用一个函数包裹的闭包结构,以骑到对变量保护的作用。
闭包的应用场景:实现数据的私有。
比如我们要做个统计函数的调用次数,函数就调用一次加加;但是这个count是个全局变量,容易被外部修改;采用闭包的形式实现数据私有,count则不会被外部修改。
1 | // 全局变量 |
A:闭包一定有return吗?
Q:闭包不一定要return。如果外部想要使用闭包的变量,则此时需要return。
A:闭包一定会有内存泄漏吗?
Q:闭包会引起内存泄漏,闭包内部的变量无法被垃圾回收机制释放。但并非所有的内存泄漏都要手动回收,比如react内部很多闭包不能回收。