簡單的同步輸出
先看一個例子
for(var i=0;i<5;i++){
console.log(i)
}
這個代碼很簡單,會輸出01234
加上setTimeout
那如果加上setTimeout
呢,例
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i)
},i)
}
執行結果就會變成這樣
輸出55555
,聰明如你 你會想到是因為異步回調的原因
這時候我想讓這個回調函數里面的跟前面一樣怎么辦呢?
閉包保存變量
如果需要保持setTimeout
打印正確的值,那就需要閉包了
例:
for(var i=0;i<5;i++){
(function(i){
setTimeout(function(){
console.log(i)
},i)
})(i)
}
結果如圖