为什么会跳秒

setInterval(function () {
    var date=new Date();
    console.log(date.getSeconds());
},1000)

为什么这个函数不是一秒一秒的输出,而是隔2秒输出一次?
阅读 5.1k
6 个回答

setIntervalsetTimeout添加的执行,并不是说多少时间后一定会执行,而是在多少时间后将要运行的部分加入运行队列中,所以这个时间不是肯定准确的。

如以下代码,输出hehe的时间就不止1秒:

setTimeout(function(){console.log('hehe')}, 1000);

var ii = 10000;
while(ii-- >= 0){
    console.log('haha');
}

所以跳秒的原因是别的Js代码在运行,使setInterval要执行的延迟了。

可以看下这篇文章 阮一峰的网络日志 >> JavaScript 运行机制详解:再谈Event Loop

是一秒一秒的输出啊

你把那1000给我删了!!!看看API自带的Direction

时间也许会不是1s。 但是绝对不会出现每次都是2s

测试

不知道楼主是怎么出现这种情况的,我测试并没有出现该情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题