当我在javascript中对数组执行操作时,console.log将数组显示为在对数组执行操作之前已经更改。我可以在chrome和firefox中重现这个。有谁知道这是为什么?
var myTabs = [[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0]];
console.log(myTabs);
myTabs[0].splice(1, 1);
console.log(myTabs);
请参阅此代码:
答案 0 :(得分:7)
在Chrome中展开已记录的对象时,您正在扩展对它的最后一个引用,不该对象在记录时的副本。
在您的情况下,最后一个引用是在调用splice()
方法之后的数组。如果您想验证差异,则需要更具体地记录日志:
var myTabs = [[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0]];
console.log(myTabs[0].join(","));
myTabs[0].splice(1, 1);
console.log(myTabs[0].join(","));
如果您真的想看到更多内容,可以进行扩展。