一个对象展开后前后的值不同

谷歌的控制台
图片描述

展开后x,y发生了变化,for in出来的x,y是展开前的值,for of不执行

对象的来源---经过d3.forceSimulation处理后nodes里面的对象

d3.forceSimulation(nodes)
  .force('link',d3.forceLink(links))
  .force('charge',d3.forceManyBody)
  .force('center',d3.forceCenter(200,200))

nodes

图片描述

阅读 2.4k
2 个回答

展开前是你console.log时的值的快照,因为Object是引用类型,展开之后会去读取内存中最新的值,对象被修改了出现前后值不一样是正常现象
图片描述

一个是打印的时候生成的快照,展开的时候拿的是内存,由于是引用类型,所以你修改了之后浏览器拿的是你修改之后的值,这个是chrome调试器的机制问题。所以要打印当前引用类似,建议使用qs或者json转成字符串

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题