猿问
一道关于js定时器的《面试题》
希望能够详细的讲解下
clearTimeout(tc) 为什么就能把最后一个setTimeout给清除?
慕雪6442864
浏览 574
回答 1
1回答
海绵宝宝撒
因为js没有块级作用域,只有全局作用域和函数作用域。所以,代码实际上是这样:function fn1() { var ts, i; for(i = 0; i < 4; i++) { tc = setTimeout(function(i) { console.log(i); clearTimeout(ts); }, 10, i); } }而且,for循环先被执行完,才开始执行定时器。所以,不存在各个定时器使用对应的ts临时值的情况,它们使用的都是ts最终的值。也就是:每个定时器中ts都指向了原fn1函数的ts,而此时ts的值是最后一个定时器,也就是第四个定时器。因此,在第一个定时器执行后,第四个定时器就被清除了。
0
0
0
随时随地看视频
慕课网APP
相关分类
React
react和jquery操作dom的区别,为什么react框架里面不建议使用jquery?
3 回答
关于react服务端渲染,css样式问题如何解决?
1 回答
我要回答