给出以下代码:
var tmp = [0];
for(var i=0;i<100;i++) {
tmp[0] = i;
console.log(tmp);
}
我期望输出[0],[1],[2],[3]等
但我改为[99],[99],[99],[99]等
逐步调试调试器(firebug)中的代码然后让我知道[0],[1],[2]的正确结果。
答案 0 :(得分:7)
console.log(tmp[0])
当你输入console.log(tmp)时,你正在记录整个数组对象。 Firebug只创建一个指向该对象的链接,然后当你“查看”firebug中的对象时,你正在查看它的当前状态(在for循环完成之后)。
答案 1 :(得分:0)
这很有趣。即使没有for
循环:
var tmp = [], i = 0;
tmp[0] = i;
console.log(tmp);
i++;
tmp[0] = i;
console.log(tmp);
产生
[1]
[1]
......也是。我不知道console.log
表现得那样。感谢@Joshua提供了一个很好的解释。