【发布时间】:2014-09-16 08:04:24
【问题描述】:
我试图弄清楚为什么这些匿名函数会返回循环迭代器的最后一个值,而不是迭代器设置时的当前值。我认为值可以免于通过引用传递,但看起来这些返回值是指向原始 i 的指针?
function myFunctions(n) {
var list = [];
for (var i = 0; i < n; i++) {
list.push(function(){
return i;
});
}
return list;
}
var res = [];
myFunctions(4).map(function(el){
res.push(el());
});
var p = document.createElement('p');
p.innerHTML = res.join(',');
document.body.appendChild(p);
//expected result: 0,1,2,3
【问题讨论】:
-
我认为在你调用任何函数时变量
i它的值是4。 -
谢谢,不知道是关闭问题,没找到上面的答案。
标签: javascript