JS计数器setinterval/setTimeout的返回值是数字?
七娃博客614人阅读
最近在跑项目的时候遇到了一个现象:多个计数器分次调用执行的时候,有一个计数器总是不生效,不执行!代码也没有任何错误,就随手打印了计数器,竟然发现了setinterval/setTimeout的返回值的秘密!
控制台打印的竟然是数字,是数字!!!
我的天啊,不敢相信的的我,新建了一个页面,专门测试JS计数器setinterval/setTimeout的返回值。
<button id="btn">stop</button> <script type="text/javascript"> let a = setInterval(()=>{ console.log(456) },20) let b = setInterval(()=>{ console.log(789) },20) let btn = document.getElementById("btn") btn.onclick = function(){ console.log(a,b) // 结果1,2 clearInterval(a) clearInterval(b) } </script>
打印出来是1和2,果然还是数字。然后去了菜鸟教程和w3c关于setTimeout()和setInterval() 有这样一个“技术细节”(https://www.runoob.com/jsref/met-win-settimeout.html)
返回值:返回一个 ID(数字),可以将这个ID传递给 clearTimeout() 和clearInterval()来取消执行。
怪不得,原因是 返回计数器的编号id,我们可以通过这个id将计数器暂停!!!也就是下面这样:
clearTimeout(1) clearInterval(2)
喔!原来是这样的,这次就记住了,计数器是返回的是一个编号id,可以通过计数器暂停!另外要注意的是,计数器被清楚后再次调用会生成一个新的“编号id”,旧id数字被删除了,不存在!
评论 | 0 条评论
登录之后才可留言,前往登录