当我在控制台中执行以下代码时, 1,4, undefined 3,2.
我想知道为什么它不执行1,3,4,2
因为在setTimeout(function(){console.log(3)}, 0);毫秒内参数是0。
(function() {
console.log(1);
setTimeout(function(){console.log(2)}, 1000);
setTimeout(function(){console.log(3)}, 0);
console.log(4);
})();
Run Code Online (Sandbox Code Playgroud)
这是John Resig的一个很好的解释:http : //ejohn.org/blog/how-javascript-timers-work/
但最重要的是console.log(1)和(4)是“内联”执行的,而2和3放置在事件队列中,直到所有内联代码都执行完之后才执行。因此,即使(3)的延迟为0,在执行所有语句后仍然会发生延迟。
测试您的代码时,我也没有收到未定义的消息。
| 归档时间: |
|
| 查看次数: |
9584 次 |
| 最近记录: |