又发现个问题,debug给奖金么?

发布于 6 年前作者 fangyao14606 次浏览最后编辑 6 年前来自 ask

微信开发工具中

以下代码

var aa={a:1,b:2,c:3};
console.log(aa);
aa.a=9;

运行后  调试器 的 console 中显示 有问题    ,  用鼠标按开 这个对象前面的箭头。。。 里面显示的内容 是错误的!

看了以下某些回复,觉得可笑,

英文 log 的含义是 日志

什么叫日志?

日志 应该 忠实记录当时的现场情况 ,

现场情况就应该是当时模样,不能引用,

这就像 警察记录命案现场,结果只在本本上写了个地址,后面写着具体内容自己去这个地址看  一样

并且 按开 箭头以后 上下内容不一致  也不符合正常人类的习惯

最后

斯德哥尔摩综合症 说的就是 你被人劫持了,最后还替匪徒打圆场,找各种理由,证明匪徒没有错,匪徒是被迫的。

10 回复
xiulan57
xiulan571 楼6 年前

大家的吐槽还真是不遗余力啊

wujie
wujie2 楼6 年前

看了评论,再看下楼主说的  最后。

qiangli
qiangli3 楼6 年前

这个不是错,console.log是异步函数,打印9是正确的

taotian
taotian4 楼6 年前

哈哈哈楼主好好补下功课。会实现也要知道其原理。

juan70
juan705 楼6 年前

不发言

hujun
hujun6 楼6 年前

js引擎怎么知道你需要展开多少个节点,为了保持你打印的对象就是那一个瞬间的,就给你保存下来整个树状节点,而js的对象又是原型链构造的,全保存下来得占多少内存,弄不好还内存泄漏了。java等直接打印还只能是个内存地址呢。这里只能把对象给序列化再打印。

zxiao
zxiao7 楼6 年前

我想说的是,你是不是在某个地方更改了a的值?   外面存的是快照  里面的是实际的值,js的特性而已

qxie
qxie8 楼6 年前

这是正常数据,因为你打印的是一个object,控制台显示的是缩略图,打印出缩略图之后,你又把值改了,所以缩略图不会进行修改,当你点开的时候,查看的是详细,所以就看到了修改后的,控制台并不是实时显示内存中的数据,想查看实时数据,请在sources中打断点进行watch

mduan
mduan9 楼6 年前

这是chromium自身的特性,并非开发者工具的行为,如果有更好的建议的话可以提到chromium的issue tracker上:https://www.chromium.org/issue-tracking

xiajun
xiajun10 楼4 年前

楼主居然还回复,让别人长点心。。。。