for(var i=0;i<5;i++){
setTimeout(function(){
console.log(++i);
},100) //6 7 8 9 10
为什么呀?
JavaScript引擎的單線程概念,
setTimeout的工作實際上要等到引擎空閒時才會執行,並不是真的在100ms後執行
問題中的實際執行順序是
for迴圈 > console.log(++i) > console.log(++i) > console.log(++i) > console.log(++i) > console.log(++i)
for迴圈結束時i的值是6,理所當然後面執行5次console.log(++i)的結果是6, 7, 8, 9, 10
同上
你的回答应该是最佳的