以下代码仅打印5
for(var x=0; x<5; x++) {
setTimeout(()=>console.log(x), 0)
}
以下代码打印0,1,2,3,4
for(let x=0; x<5; x++) {
setTimeout(()=>console.log(x), 0)
}
setTimeout的表现方式是什么? setTimeout的第二个参数是0,所以它应该立即执行回调,这是第一个参数。如果第二个参数是一个正数,比如10,那么我理解回调被调用,x将达到它的最终值,而且我认为应该是4而不是5。