let funs = []
for(let i = 0; i < 3; i++){
funs[i] = (function(i){
// 注意此处是按值传递
return function(){
console.log('i:',i)
}
})(i)
}
/* 执行后形成闭包
funs = [
function(){ (i=0)
console.log('i:',i)
},
function(){ (i=1)
console.log('i:',i)
},
function(){ (i=2)
console.log('i:',i)
},
]
*/
funs[0]() // 0
funs[1]() // 1
funs[2]() // 2
function fun(){
for(let i = 0,arr = []; i < 3; i++){
arr[i] = function(){
console.log('i',i)
}
}
return arr
}
let funs1 = fun()
/*
外层函数被调用1次,执行后形成一个闭包
*/
funs1[0]() // 3
funs1[1]() // 3
funs1[2]() // 3