console.log / console.dir显示对象的最后状态,而不是当前状态

时间:2014-04-14 17:53:19

标签: javascript logging console.log

我想记录我的数组/对象如何随着循环的新步骤而改变。 Console.log这样做很糟糕。它只显示对象的最后状态。例如:

var a = {};
console.log(a); // {bob1: 0, bob2: 0}
a.bob1 = 0;
console.log(a); // {bob1: 0, bob2: 0}
a.bob2 = 0;
console.log(a); // {bob1: 0, bob2: 0}

我在那里发现了另一个命令:console.dir。它在同一个例子中正常工作。它正确地显示了对象的状态。

看这个例子。此命令完美无缺:http://jsfiddle.net/RLzVV/

现在,请查看我的代码。所有输出都在控制台中。 http://jsfiddle.net/3BDs7/4/

这是一个星际算法。在控制台中查看此部分(邻居3循环<--- neighbor 3 start ---> this code is situated here <--- neighbor 3 stop -->)。将此输出到控制台的车道是105-113

new openset length: 2
openset after adding new vertex
**shows 1 element, but length is 2**

它显示长度为2,但仅显示1个元素。但!在我看来algo工作正常(它弹出另一个元素,之后隐藏在此步骤中)。为什么会出现这个bug?我做错了什么吗?在我看来,到处都只显示阵列的最后状态,而不是最新状态:(请帮帮我。

1 个答案:

答案 0 :(得分:4)

这是一个已知问题 - 听起来像是在Chrome下运行。

最简单的解决方法是在登录时对值进行JSON编码。

console.log(JSON.stringify(a));