闭包的缺点及解决

本文探讨了函数执行中闭包可能导致的内存问题,如局部变量未释放导致的内存占用延长和内存泄漏。提供了避免这些问题的方法,包括合理使用闭包和及时资源清理,并解释了内存溢出的概念。通过实例解析了回调函数引发的内存泄漏问题。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值