闭包的缺点
函数执行完之后,函数内的局部变量没有释放,占用内存的时间会变长。容易造成内存泄露。
function fn1(){
var arr = new Array[10000]
function fn2() {
console.log(arr.length)
}
return fn2
}
var f = fn1()
f()
上述代码没有释放arr占用的空间,这样数组的这部分空间就被永远的占用着。
解决办法:
- 能不使用闭包就不使用闭包
- 及时释放
内存溢出
一种程序运行时发生的错误。当程序运行需要的内存超过了剩余内存时,就抛出内存溢出错误。
内存泄露
占用的内存没有及时释放。内存泄露积累多了就会导致内存溢出。
常见的内存泄露:
- 意外的全局变量
- 没有及时清理的计时器或回调函数
- 闭包
网友评论