for (var i = 0; i < 3; i++) { setTimeout(function() { console.log(i); }, 0); console.log(i); } 结果是: 0 1 2 3 3 3 分析: 1.在实践中,setTimeout 会在其完成当前任何延迟事件的事件处理器的执行,以及完成文档当前状态更新后,告诉浏览器去启用 setTimeout 内注册的函数. 2.setTimeout是异步的.正确的理解setTimeout的方式(注册事件): 有两个参数,第一…