Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
关于我的 js 脚本的奇怪行为,我已经绞尽脑汁很久了。当我将值输出d.parent.x到控制台并显示不同的值时,与我打印d.parent到控制台并通过控制台浏览值时不同。
d.parent.x
d.parent
在屏幕截图中,您看到对象本身的 x 值为 525.5,而 d.parent.x 的输出为我提供 148。
我不确定这是 js 行为还是使用过的D3.js的行为。
我为它创建了一个 jsfiddle(source,result)。在 Chrome 或 Safari 中打开控制台时,您可以看到屏幕截图中的输出。
这是 console.log 的一个已知问题 - 它是基于引用的,并且在记录对象时基本上会在某些情况下最终缓存结果。
要解决它,您通常可以这样做console.log(JSON.stringify(d.parent)),但由于循环引用,这在您的情况下不起作用。我只是在您的脚本中设置了一个断点并查看了d.parentand d.parent.x。
console.log(JSON.stringify(d.parent))
它们确实会产生与console.log(d.parent.x)原始代码中显示的值相同的值。
console.log(d.parent.x)