收藏
回答

console.log显示的js结构体成员变量的值不正确

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows 1.02.1809260
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已经是新的值了,但是此时还没有赋值

回答关注问题邀请回答
收藏

3 个回答

  • 卢霄霄
    卢霄霄
    2018-10-26

    如果是没被销毁,仍然在内存里的对象,你点下拉的时候,会是去看的内存里的值 之后收起状态下,那一行里的内容,才是当时的

    2018-10-26
    有用 1
    回复 3
    • zkeyblade
      zkeyblade
      2018-10-26

      那复杂结构体怎么看当时的值?收起状态那一行只能显示有限的内容,太多了就会显示{...}

      2018-10-26
      回复
    • 卢霄霄
      卢霄霄
      2018-10-26回复zkeyblade

      浅拷贝一下,比如

      console.log(JSON.parse(JSON.stringify(obj)))

      2018-10-26
      1
      回复
    • zkeyblade
      zkeyblade
      2018-10-26回复卢霄霄

      非常感谢!JSON.stringify很好用  还可以格式化看的很清楚!

      2018-10-26
      回复
  • 2018-10-26

    没有问题的,因为你打印的是改变之前的值,然后你后面你修改了bbbb的值,而bbbb的引用实际上是aaaa,所以当你展开old aaaa和old bbbb的时候其实是取的最新的值,没毛病,等于一个对象不会重新开辟出来一个新的内存地址来存放这个新对象

    2018-10-26
    有用
    回复
  • 贝壳找房
    贝壳找房
    2018-10-26

    这个不是小程序,不是js的问题,这个是调试器的锅。

    2018-10-26
    有用
    回复
登录 后发表内容