对象赋值前打印,结果却是赋值后的值

对象赋值前打印,结果却是赋值后的值

window.onload = function () {
    var obj = {
        a: 123,
        b: [1, 2, 3]
    }
    console.log(obj);
    obj.a = 333;
    obj.b[0] = 123123;
    console.log(obj);
}

图片描述

本来第一次打印一概是

{
    a: 123,
    b: [1, 2, 3]
}

为什么变成了

{
    a: 333,
    b: [123123, 2, 3]
}

求高手指教。。。

阅读 5.9k
3 个回答

chrome的console问题。。不用太在意。

简单来说就是chrome在console输出的时候还是原样的,但是展开时候是获取的当前状态。

新手上路,请多包涵

如果你想显示当时的信息,可以用 JSON.stringify(obj) 把对象处理成 JSON 来输出,就可以看到初始和修改后的

你需要在打印时期复制一份,如:slice()再打印出来。
否则此变量在后来变化后,就是新数值,打印页是新数值了,(原始类型除外)。

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