JS/定时器/累加

1、setTimeout
在指定时间之后执行,只执行一次

如果执行的代码块为函数需要传参数,示例:

setTimeout(f,1000,"yu","ko");
function f(pa,po) {
    alert(pa+","+po);
}

2、setInterval
在指定的时间间隔内重复执行,根据时间间隔执行,不清除则永久重复下去
示例:

setInterval(function () {
    console.log(1);
},1000)

3、注意点
setTimeroutsetInterval的使用中,如果需要传入一个函数。注意只能传入函数名:setInterval(f,1000),带括号意思是函数执行完的返回值。

4、定时器的累加
示例:

box.onmouseover = function () {
   timer=setInterval(function () {
        height+=1;
        console.log(height);
    },1000)
};

导致最后打印的速度“越来越快”
原理:每停留在box上一次,就会产生一个定时器去执行height+1这个函数。
只有一个定时器:每隔1秒打印一次height

第二次停留时,有两个定时器:每隔1秒有两个定时器去做这件事

简单的例子:
你点击一次按钮,相当于叫一个人过去,每隔1秒把打印一下;你点两次,就相当于让两个人去干同样的事情,都是每隔1秒打印一次,但是,假设过了1秒,第一个人过去打印了,第二个人也会过去打印,但是他们都是在同时进行的,会有叠加,就相当于每隔1秒打印多于原来两倍的速度。

累加问题的解决:先清除、后累加。先清除之前的定时器,然后再添加定时器
示例:

box.onmouseover = function () {
    clearInterval(timer);
    /*先清除后设置*/
    timer=setInterval(function () {
        height+=1;
        console.log(height);
    },1000)
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值