L-xl 2020-11-17 10:41 采纳率: 75%
浏览 50
已结题

js中引用类型的赋值问题

  let b = {id: 123};
  console.log(b);   //  {id:234}
  b.id = 234;
  console.log(b);   //  {id:234}
  
  let b = {id: 123};
  console.log(b.id);    //  123
  b.id = 234;
  console.log(b.id);    //  234

我知道对象是引用类型这里打印b是打印b指向的内存空间,但是同步执行,在打印第一个b的时候我还没有改变b的值,我预期第一个打印结果是{id:123},第二个打印结果是{id:234},这里面却全是{id:234},请各位大佬指点一下,这是什么原因?小菜鸡在线求教!!

  • 写回答

3条回答 默认 最新

  • qq_26397031 2020-11-18 17:12
    关注

    因为控制台打印的也只是这个对象的一个快照,相当于引用地址,你点开看的时候才回去查询,所以就出现这种情况。你可以试试console.log(JSON.stringfy(b))就能得到正确的结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口