js计时器不清除后会累积?

fantasy5252 2016-07-23 11:26:43
var cleartime;
var speed=0;
function fun(){
cleartime=setInterval(function(){
speed-=255/11;
if(speed<-255){
clearInterval(cleartime);
speed=0;
imgs.appendChild(imgs.children[0]);
o=setTimeout(fun,1000);
}
console.log(cleartime);
imgs.style.left=speed+"px";
},60)
}
fun();


问题:我是想实现图片的无缝滚动,效果实现了,但是不明白为什么要清除计时器,不清除的话图片滚动的速度会越来越快,这是什么原因造成的?是函数自身调用导致累积?是什么因子造成速度加快呢,这是什么原理。
...全文
1299 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fantasy5252 2016-08-15
  • 打赏
  • 举报
回复
引用 3 楼 KK3K2005 的回复:
好好看看 setInterval 和 settimeout的区别 很多问题 只是没有仔细看 文档
文档看了不是很理解
天际的海浪 2016-07-24
  • 打赏
  • 举报
回复 2
fun()函数每调用一次都会创建一个新的setInterval()计时器。不清除计时器的话会每60毫秒执行1次计时器中的代码,永远的运行下去。 当第二次调用fun()函数时又会创建一个新的计时器。如果没有清除之前的计时器的话。就会同时有2个计时器在运行。这样就会每60毫秒执行2次计时器中的代码。 当第三次调用fun()函数时又会同时有3个计时器在运行。会每60毫秒执行3次计时器中的代码。 这样就造成速度越来越快了。
KK3K2005 2016-07-24
  • 打赏
  • 举报
回复
好好看看 setInterval 和 settimeout的区别 很多问题 只是没有仔细看 文档
qq_34285369 2016-07-24
  • 打赏
  • 举报
回复
定时器没清除会使其一直运行,一方面会影响你所写的项目,另一方面会影响脚本的运行效率,好多影响不是我们用肉眼能看到的,定时器一般需要在正确条件下触发,不满足条件需要清除

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧