关于setInterval返回值问题

本文详细解析了JavaScript中setInterval函数的返回值特性,揭示了其在不同浏览器环境下的表现差异,如火狐浏览器首次执行返回值为2的现象。同时,通过对比错误与正确的实现方法,阐述了如何正确使用clearInterval来停止定时器,避免内存泄漏等问题。
oBtn1.onclick = function(){
clearInterval(timer);
timer = setInterval(cwidth,10);
alert(timer);
}
oBtn2.onclick = function(){
clearInterval(timer);
}

setInterval返回值相当于一个Id,每次执行都会产生一个特定的Id,返回值为数字,从一开始逐次累加。

但是在火狐浏览器第一次执行时返回值为2.  

错误方法:

function mySetInterval(f, param, time) {
        var interval = param._tag;
        clearInterval(interval);
        interval = setInterval(function () {
            f(param);
        }, time);
    }

interval 返回值给一个私有变量,私有变量在这个方法结束就没了,所以 interval 这个定时器取消不掉。

正确方法:

function mySetInterval(f, param, time) {
        clearInterval(param._interval);
        var interval = setInterval(function () {
            f(param);
        }, time);
        param._interval = interval;
    }

 

转载于:https://www.cnblogs.com/ziyoublog/p/10021404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值