闭包的优点:延长了局部变量的生命周期
1、缺点:函数执行完后,函数内的局部变量没有释放,占用内存时间会变长
容易造成内存泄漏
2、解决
能不用闭包就不用
及时释放——让内部函数成为垃圾对象 回收闭包
- function fn1(){
- var arr=new Array(1000);
- function fn2(){
- console.log(arr.length)
- }
- return fn2;
- }
- var f=fn1();
- f();
- f();
- f();//不释放 内存泄露 占用空间
- f=null;//释放
内存溢出:一种程序运行的错误
当程序运行需要的内存超过了剩余的内存时,就抛出内存溢出的错误
- var obj={};
- for(var i=0;i<10000;i++){
- obj[i]=new Array(100000)
- }
内存泄露
占用的内存没有及时释放
内存泄露积累多了就容易导致内存溢出
常见的内存泄露:
意外的全局变量 a=3 等价于window.a
没有及时清理的计时器或回调函数
- var intervalId=setInterval(function(){
- console.log('dd')
- },2000)
- clearInterval(intervalId)
闭包