【发布时间】:2021-09-21 11:44:06
【问题描述】:
我得到的输出是 5,但我假设是 3。背后的逻辑是什么,我怎样才能输出 3。
const obj = {
a: 1,
b: 2,
c: {
p: 3
}
}
const obj1 = { ...obj}
obj.c.p = 5
console.log(obj1.c.p)
【问题讨论】:
-
首先评估您认为答案应该是 3 的原因。(提示:您将 reference 复制到
c而不是它的值) -
obj.c.p是参考值,而不是实际值。当您将obj传播到obj1时,将保留对obj.c.p的引用,而不是值,因此当您执行obj.c.p = 5时,该值将被更新,并且obj1包含对该值的引用。
标签: javascript