问题如:创建一个数组,数组的每一个元素是一个函数,每个函数输出其在数组中的索引
有三种方法可以实现涉及到闭包函数的调用。
// 1.使用闭包特性;
function getArray(){
var arr = [];
for(var i=0;i<10;i++){
(function(j){
arr.push(function(){
console.log(j)
});
})(i);
}
return arr;
};
var t = getArray()
t[0]();//0
t[1]();//1
// 2. 使用闭包特性
function getArrays(){
var brr = [];
for(var i=0;i<10;i++){
brr.push((function(j){
return function(){
console.log(j)
}
})(i));
};
return brr;
};
var y = getArrays();
y[0]();//0
y[1]();//1
//3. 直接使用 let 声明来实现
function getArrayPlus(){
let crr = [];
for(let i=0;i<10;i++){
crr.push(function(){
console.log(i)
});
};
return crr;
};
let z = getArrayPlus();
z[0]();//0
z[1]();//1