关于clearTimeout清除标记的问题

来源:8-6 取消计时器clearTimeout()

沫荼

2017-06-07 23:24

我点击了多次setTimeout()之后启动了多个计时器,但是每次都赋值给了i变量,按常理来说不应该覆盖变量所指向的计时器吗?

为什么我点击多次clearTimeout()之后计数增加确实变慢了,而且最后停了,这说明确实把每一个计数器都给删除了呀。但是清除的是i变量指向的那个计数器呀。这里不太明白,为什么明明覆盖了i所指向的计数器了执行清除方法之后还能一个个的清除计数器

写回答 关注

1回答

  • 慕勒7123956
    2017-06-08 10:04:32
    setTimeout("startCount()",1000);

    这个返回的是一个计时器的id,每一个计时器在执行的时候都会有自己的ID,就是没有这个返回值,这个计时器也会运行下去,你覆盖的只是i只是这个变量,你不能做到覆盖计时器,为什么能做到清理计时器,是因为,不断有新的函数生成新的setTimeout, i的值也在变化,当你点击取消函数的时候,setTimeout会等这个取消函数执行过以后一秒才开始执行(即使这个取消函数执行时间可以忽略不计),这时候就会把下一秒将要执行的这个i给取消掉,(但是只会取消一个,因为当时的i值是唯一的)

    沫荼

    谢谢,明白了

    2017-06-10 22:08:52

    共 7 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题