对于我的js脚本的奇怪行为,我已经很长时间了。当我将值d.parent.x
输出到控制台并显示不同的值时,比将d.parent
打印到控制台并通过控制台浏览值时。
在屏幕截图中,您看到对象本身的值x为525.5,而d.parent.x的输出给出了148。
我不确定这是js行为还是使用过的D3.js行为。
我为它创建了一个jsfiddle(source,result)。在Chrome或Safari中打开控制台时,您可以在屏幕截图中看到输出。
答案 0 :(得分:2)
这是console.log的一个已知问题 - 它是基于引用的,并且在记录对象时基本上会在某些情况下缓存结果。
要绕过它,你通常可以console.log(JSON.stringify(d.parent))
,但由于循环引用,这在你的情况下不起作用。我只是在您的脚本中设置了一个断点,并查看了d.parent
和d.parent.x
。
它们确实会产生相同的值,即console.log(d.parent.x)
在原始代码中显示的值。