JS 中的闭包
1. 什么是闭包
比如下面一段代码就产生了闭包,而闭包的本质,是内部函数中的一个对象,这个容器中包含引用的变量
function fn1( ){
let a = 2;
function fn2( ){
a++;
console.log(a)
}
return fn2
}
let f = fn1( );
f( ) // 控制台输出3
2.闭包是什么时候产生的
闭包的产生条件与时机如下
- 函数存在嵌套关系
- 内部函数引用了外部函数的变量
- 外部函数调用,内部函数定义执行的时候(而不是内部函数执行的时候),产生了闭包
3.闭包是什么时候消失的
闭包会在内部函数成为垃圾对象的时候。对于上面的例子就是我们手动释放f = null
的时候
如果不进行释放的话,就会造成内存泄漏的问题,如果内存泄漏较多就会造成内存溢出的问题,简而言之就是内存不够用了
4. 闭包的作用
闭包可以延长外部函数变量对象的生命周期,就是例子中a
的生命周期