代码片段: for(var i=0;i<8;i++){ setTimeout(function () { console.log(i) },0) } 输出了8次8,这跟js的执行顺序和作用域链有关. 1.js同步执行与异步执行 js的执行机制: js是单线程环境,从上到下.依次执行,即 同步执行:在这段代码中,for循环是同步代码,setTimeout是异步代码. js在执行代码的过程中,碰到同步代码会依次执行,碰到异步代码就会将其放入任务队列中进行等待,当同步代码执行完毕后再开始执行异步代码,