由于js是单线程的,即同一时间只能执行一条语句,所以JS执行代码块会阻塞异步事件的执行,即当一个异步事件(鼠标点击,ajax,settimeout)发生的时候,他们将排在队列的最后等待执行。
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);
},1000);
}
//执行结果为5,5,5,5,5,
如果想要输出0,1,2,3,4,则用自执行函数
for (var i = 0; i < 5; i++) {
setTimeout(function(m) {
console.log(m);
}(i),1000);
}