给定以下代码:
var tmp = [0];
for(var i=0;i<100;i++) {
tmp[0] = i;
console.log(tmp);
}我期望输出为,1,2,3等
但我得到的却是99,99,99,99,等等
但是,在调试器(firebug)中单步执行代码会得到正确的结果,1,2。
发布于 2010-08-09 13:15:45
console.log(tmp[0])当您放置console.log(tmp)时,您将记录整个数组对象。Firebug只创建到对象的链接,然后当您在firebug中“查看”对象时,您查看的是它的当前状态(在for循环完成之后)。
发布于 2010-08-09 13:33:16
这很有趣。即使没有for循环:
var tmp = [], i = 0;
tmp[0] = i;
console.log(tmp);
i++;
tmp[0] = i;
console.log(tmp);产生
[1]
[1]...as很好。我不知道console.log是这样做的。感谢@Joshua的一个很好的解释。
https://stackoverflow.com/questions/3437481
复制相似问题