var aaaa = { a1: 'a1' , a2: 'a2' , }; var bbbb = aaaa; console.log( "old aaaa: " , aaaa); console.log( "old bbbb: " , bbbb); bbbb.a1 = 'a3' ; console.log( "new aaaa: " , aaaa); console.log( "new bbbb: " , bbbb); |
old aaaa和old bbbb展开看他们的a1已经是新的值了,但是此时还没有赋值
如果是没被销毁,仍然在内存里的对象,你点下拉的时候,会是去看的内存里的值 之后收起状态下,那一行里的内容,才是当时的
那复杂结构体怎么看当时的值?收起状态那一行只能显示有限的内容,太多了就会显示{...}
浅拷贝一下,比如
console.log(JSON.parse(JSON.stringify(obj)))
非常感谢!JSON.stringify很好用 还可以格式化看的很清楚!
没有问题的,因为你打印的是改变之前的值,然后你后面你修改了bbbb的值,而bbbb的引用实际上是aaaa,所以当你展开old aaaa和old bbbb的时候其实是取的最新的值,没毛病,等于一个对象不会重新开辟出来一个新的内存地址来存放这个新对象
这个不是小程序,不是js的问题,这个是调试器的锅。