js 赋值的问题

新手上路,请多包涵
let bbb = {
a:1,
b:2,
c:3,
d:4
}
let  aaa = bbb
aaa.b = 3
console.log(bbb)

bbb.b 为什么等于3了?

阅读 1.8k
2 个回答

因为JavaScript对象是引用类型。aaa.b 依然指向 bbb.b。通过深度克隆可以实现改变aaa.b的值不影响bbb.b。

bbb 是引用类型, aaa 是它的别名(aaa=bbb 默认浅复制) 二者指向同一内容
修改aaa.b时,bbb.b也被修改。若想不变,bbb 则必需是aaa内容的副本,可以深度复制实现,而不能直接用aaa=bbb

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