setTimeout函数问题
如何使用setTimeout函数,对某模块内的方法进行调用?我现在使用setTimeout对某模块内的方法进行调用,可是现实该方法未定义?...
如何使用setTimeout函数,对某模块内的方法进行调用?
我现在使用setTimeout对某模块内的方法进行调用,可是现实该方法未定义? 展开
我现在使用setTimeout对某模块内的方法进行调用,可是现实该方法未定义? 展开
展开全部
首先,setTimeout是可以取消的,可以不让其永远不终止,方法如下:
var timer = null;
function f(){
alert("k");
timer = setTimeout(f,1000);
}
// 在另外一个函数中,在某种条件下,取消之前的定时器
clearTimeout(timer);
这样,timer就不再执行了,也就不会再次调用函数f,生成新的定时器。
其次,关于内存,js类似于java有垃圾回收机制,一些不会再次用到的变量等,会被清理。只要是作用域不逃出函数f的,函数f执行完毕后,js总是有办法将其销毁,当然不一定百分百销毁。这样的话,内存怎么会越来越多呢?只有函数f在执行的时候会多一些,但随即又会被清理的。
最后,即便没有clearTimeout,在浏览器关闭的时候,一切都会消失的。
要提醒的是,如果函数f里在不停的创建对象,而且在函数f执行完毕后,这些对象又是被引用的,确实会有内存被越来越多的占用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询