JS有两种定时器分别是setTimeout()和setInterval(),这两个区别就是setTimeout()是一次性的定时器,而setInterval()是循环的定时器。
定时器的精度
js中的定时器精度并不准确,这是因为JS中的定时器仅仅是将执行的语句加入队列,这样在定时器之前的语句若是在循环或者有延迟的情况下,定时器也会相应地延
对于性能的消耗
上面提到了js中的定时器精度不准确的原因,同样的这也会导致使用setTimeInterVal语句会卡顿,其不管语句是否执行完成,都会在时间点执行语句。实际上大多数的场景中,只是想要定时之后执行完语句再等待定时的触发,完全可以使用setTimeOut搭配clearTimeout这样在使用定时器之后进行消除再加一个循环,总和性能比单纯的setTimeInterVal要好上不少。
可执行字符串形式语句
由于历史原因,两种定时器都支持eval的效果,可以执行字符串形式的语句。
若定时时间为0则放在队列最后执行
如果将定时为0秒后执行,语句并不会立刻执行,而是将其放在队列最后,等待所有语句执行完成之后,再立刻执行。