微信开发工具中
以下代码
var aa={a: 1 ,b: 2 ,c: 3 }; console.log(aa); aa.a= 9 ; |
运行后 调试器 的 console 中显示 有问题 , 用鼠标按开 这个对象前面的箭头。。。 里面显示的内容 是错误的!
看了以下某些回复,觉得可笑,
英文 log 的含义是 日志
什么叫日志?
日志 应该 忠实记录当时的现场情况 ,
现场情况就应该是当时模样,不能引用,
这就像 警察记录命案现场,结果只在本本上写了个地址,后面写着具体内容自己去这个地址看 一样
并且 按开 箭头以后 上下内容不一致 也不符合正常人类的习惯
最后
斯德哥尔摩综合症 说的就是 你被人劫持了,最后还替匪徒打圆场,找各种理由,证明匪徒没有错,匪徒是被迫的。
这是chromium自身的特性,并非开发者工具的行为,如果有更好的建议的话可以提到chromium的issue tracker上:https://www.chromium.org/issue-tracking
这个不是错,console.log是异步函数,打印9是正确的
js引擎怎么知道你需要展开多少个节点,为了保持你打印的对象就是那一个瞬间的,就给你保存下来整个树状节点,而js的对象又是原型链构造的,全保存下来得占多少内存,弄不好还内存泄漏了。java等直接打印还只能是个内存地址呢。这里只能把对象给序列化再打印。
这是正常数据,因为你打印的是一个object,控制台显示的是缩略图,打印出缩略图之后,你又把值改了,所以缩略图不会进行修改,当你点开的时候,查看的是详细,所以就看到了修改后的,控制台并不是实时显示内存中的数据,想查看实时数据,请在sources中打断点进行watch
哈哈哈楼主好好补下功课。会实现也要知道其原理。
我想说的是,你是不是在某个地方更改了a的值? 外面存的是快照 里面的是实际的值,js的特性而已
看了评论,再看下楼主说的 最后。
不发言
大家的吐槽还真是不遗余力啊
楼主居然还回复,让别人长点心。。。。