console.log('Hi'); setTimeout(function cb1(){ console.log('cb1 5000') }, 5000); // 假设中间有好多行代码 setTimeout(function cb2(){ console.log('cb2 4999') }, 4999); console.log('Bye');
本来以为 4999 肯定会比 5000 先执行
但是听完课之后,发现好像不是这样
cb1被放到 timer 之后直接就开始计时了,然后接着往后执行代码
直到 cb2 被放进 timer,可能这时候已经过了 1ms
所以输出的时候,有可能会 先输出 cb1 5000, 后输出 cb2 4999
我自己试验的时候,加了不少代码,但还是先输出了 4999,我感觉可能是加的代码不够多
然后试了一下把 4999 改成 4999.99999999999
发现确实先输出了 5000
所以我的理解应该没错吧? 想找老师印证一下