for(var i=0;i<4;i++){
console.log(i);
this.$http.get('json/room'+this.imgB[i].id+'.json').then(function(response){
console.log(i);
...
}
}
第一个console.log的值是 0 1 2 3
第二个console的值是 4 4 4 4
为什么呢 ?
for(var i=0;i<4;i++){
console.log(i);
this.$http.get('json/room'+this.imgB[i].id+'.json').then(function(response){
console.log(i);
...
}
}
第一个console.log的值是 0 1 2 3
第二个console的值是 4 4 4 4
为什么呢 ?
13 回答13k 阅读
7 回答2.2k 阅读
9 回答1.7k 阅读✓ 已解决
6 回答1.6k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
闭包问题 循环四次引用的是同一个 i ,输出最后 i++ 的 4,解决办法可以写一个自执行函数,(i)作为函数的变量
简单的例子,当 for 循环里包含 setTimeout 时,
解决办法之一