var data = ["s","a"]
var asyncFunctionss = [];
for (var i in data) {
asyncFunctionss.push(function (callback) {
console.log(i);
});
}
for (var g in asyncFunctionss) {
asyncFunctionss[g]();
}
我尝试运行此程序,它提供以下输出。
预期产出
0
1
实际输出
1
1
如何实现预期输出?
答案 0 :(得分:2)
您需要IIFE。原因是,只要调用 asyncFunctionss 中的函数元素,变量 i 就已经是1.您可以使用IIFE来记住变量 i的值:
var data = ["s","a"]
var asyncFunctionss = [];
for (var i in data) {
(function(i){
asyncFunctionss.push(function (callback) {
console.log(i);
});
})(i);
}
for (var g in asyncFunctionss) {
asyncFunctionss[g]();
}