【发布时间】:2010-09-04 06:09:19
【问题描述】:
这是我的困境。
我有这段代码:
var list_of_numbers = new Array();
function AddToArray(func)
{
// Add to the *beginning* of the array
// essentially reversing the order
list_of_numbers.unshift(func);
}
function DisplayNumber(num)
{
document.write(num);
}
for(var i=0;i<5;++i)
{
AddToArray(function() { DisplayNumber(i); });
}
for(var i=0;i<5;++i)
{
list_of_numbers[i]();
}
应该发生的事情是 5 个内联函数将被添加到数组中 - 每个 获取i 的副本。然而这不会发生。
预期输出:
43210
实际输出:
01234
【问题讨论】:
-
@Michael:我不明白你在说什么。
-
@Michael:我知道——这就是它应该做的。问题是它没有在循环的每次迭代中保存
i的值......我认为。 -
是的,JavaScript 不会“保存”值。你有Closure Loop Problem。
标签: javascript copy inline-functions