for(var i = 0; i < 5; i++){
setTimeout(function(){
console.log(i);
}, 1000 * i);
}
setTimeout()是一个异步函数,由于js会先执行所有同步任务,再执行异步任务,
所以当开始执行setTimeout()异步任务时,for循环早已结束,
并且由var声明的变量i不具有块级作用域的特点,当for循环结束时,i值为5,故再执行setTimeout()函数时,输出结果为5 5 5 5 5
4<5 ,执行完循环后i++,i=5进不去循环了
标签:输出,setTimeout,异步,代码,任务,var,执行 From: https://www.cnblogs.com/longmo666/p/17823871.html