CNode

请教一个JS的问题,多谢回复!谢谢~

Lleolovenodejs发布于14 年前最后回复14 年前1 回复4970 浏览0 收藏

麻烦请问,这样写会导致内存泄露吗?多谢回复! for examle:

var Pro = {
    doc : document,
    getLeftArrowEvent : function(){
	    //引入this,即整个对象为方便以后可能的引用
	    var is = this,
		    doc = is.doc,
		    leftArrow = doc.getElementById('leftArrow');
	    leftArrow.onmouseover = function(){
		    var th = is,
			    doc = th.doc,
			    leftArrow = doc.getElementById('leftArrow');
		    leftArrow.style.cursor = 'pointer';
	    };
	    leftArrow.onmouseout = function(){
		    var th = is,
			    doc = th.doc,
			    leftArrow = doc.getElementById('leftArrow');
		    leftArrow.style.cursor = '';
	    };
	    leftArrow = null;
    }
};
查看回复

回复 (1)

H
huangdh3#1·14 年前

觉得不会,不存在循环计数 Pro域下的doc,在getLeftArrowEvent使用一次计数+1,执行结束后,doc计数会减一因此最终会被回收。 同样我们看getLeftArrowEvent下的is和doc这些在本函数中都是使用了一次,都会被正常回收。leftArrow被使用了两次,但是在执行完 leftArrow.onmouseover 计数减一,继续执行完leftArrow.onmouseout再减一。同样看onmouseover 、onmouseout这两个函数中也并不存在循环调用的问题,只是有一个问题,因为大部分都是相同命名,是局部变量和全局变量混淆的问题,很容易让大家误解会存在内存泄漏吧。 个人觉得,如有问题,希望大家一起交流!

参与回复
登录后即可参与回复。登录