【发布时间】:2017-10-24 18:04:01
【问题描述】:
我确定我在这里做了一些愚蠢的事情,但我不确定是什么。我将匿名函数添加到数组中以供以后执行,并在 for 循环中创建它们,其中的变量会改变每次迭代。
我希望记录的值是: https:server.net/a https:server.net/b
但我得到的是: https:server.net/b https:server.net/b
看起来可能当我重新定义函数时它会覆盖它的最后一个版本,但我不知道为什么。我认为每个匿名函数都会有所不同。
为什么?我在这里做错了什么?
这里有一些示例代码:
f = [];
items = ['a', 'b'];
for(var i = 0; i < items.length; i++){
var itemID = items[i];
var itemAccessUrl = `https://server.net/${itemID}`;
var func = function(){
console.log(itemAccessUrl);
};
f.push(func);
}
console.log(f.length);
for(var j = 0; j < f.length; j++){
func();
}
【问题讨论】:
标签: javascript arrays scope