闭包的缺点及解决

1.缺点:*函数执行完毕后,函数内的局部变量没有释放,占用内存的时间会变长
*容易造成内存泄漏
2.解决:
*能不用闭包就不用
*及时释放
3.内存溢出:
*一种程序运行出现的错误
* 当程序运行需要的内存超过剩余的内存时,就会出现内存溢出的错误
4.内存泄漏:
*占用的内存没有及时释放
*内存泄漏积累多了就容易导致内存溢出
*常见的内存泄漏:
*意外的局部变量
*没有及时清理的计时器或 回调函数(回调就是一个函数的调用过程。那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调)

function a(callback)
{
    
       
    alert("我是parent函数a!");
    alert("调用回调函数");
    callback();
}

function b(){
    
    
alert("我是回调函数b");
}

function c(){
    
    
alert("我是回调函数c");
}
function test()
{
    
    
    a(b);
   a(c);
}
           *闭包题目
1.
var name = "The Window";
var object = {
    
    
  name: "My Object",
  getNameFunc : function(){
    
    
    return function(){
    
    
         return this.name;     //这里没有闭包
    };
  }
};
console.log(object.getNameFunction()());   //The Window
2.
var name2 = "The Window";
var object  = {
    
    
    name2: "My Object";
    getNameFunc : function(){
    
    
       var that = this;
       return function(){
    
    
           return  that.name2;  //这里有闭包
        };
    }
};
console.log(object.getNameFunction()());   //My Object

3.
function fun(n,o){
    
    
				console.log(o);
				return {
    
    
					fun: function(m){
    
    
						return fun(m,n);
					}
				};
			}
			var a = fun(0); a.fun(1); a.fun(2); a.fun(3);  //undefinde 0 0 0 
			var b = fun(0).fun(1).fun(2).fun(3); // undefined 0 1 2
			var c = fun(0).fun(1);  c.fun(2);  c.fun(3); // undefined 0 1 1

猜你喜欢

转载自blog.csdn.net/Vodka688/article/details/113726615