1.闭包的产生
在js里,当存在函数嵌套,并且在函数的内部引用了函数外部的数据的时候,闭包就产生了。
例如:
function fn(){
var a = 1
function fn1(){
console.log(a)
}
}
2.闭包的特性
闭包内的数据在函数执行完之后不会被垃圾回收器回收,因此可以延长部分数据的生命周期,同时使函数外部可以对函数内部的数据进行相关的操作。但是这一特性也会引起一些问题,比如当闭包无用之后但是没有及时回收,就会产生内存溢出和内存泄露。
3.内存溢出
当程序运行所需的内存超出了剩余可分配的内存时,就会产生内存溢出,是一种程序运行出现的错误。
4.常见的内存泄露
1.意外的全局变量
2.没有及时清理的计时器和回调函数
3.闭包
因此,闭包虽然好用,但是可以不用的时候尽量不要用,用了的话要及时清除。