js 閉包經典
阿新 • • 發佈:2018-12-28
閉包隨處可見吧,但往往會涉及非同步問題
(function cc(){ var i ,arr=[]; i = 0; for(i;i<3;i++){ arr.push(function(){ console.log(i) }) } arr[0](); // 3 arr[1](); // 3 arr[2](); // 3 //函式非同步 })() // var 換成 let (function cc(){ let i ,arr=[]; i = 0; for(i;i<3;i++){ arr.push(function(){ console.log(i) }) } arr[0](); // 3 arr[1](); // 3 arr[2](); // 3 })()
要實現逐步列印
(function cc(){
let i ,arr=[];
i = 0;
for(i;i<3;i++){
(function(i){
console.log(i)
})(i)
}
// 0
// 1
// 2
})()
(function cc(){
let i ,arr=[];
i = 0;
for(i;i<3;i++){
(function(i){
setTimeout(()=>{console.log(i)},1000)
})(i)
}
// 0
// 1
// 2
})()