【发布时间】:2022-10-23 19:09:33
【问题描述】:
我通过改变属性值来玩弄 JavaScript 对象并找到这个观察结果。
问题陈述:我在函数内改变对象属性值并返回对象,但不知何故它保留了以前的值而不给出更新的值。
const obj = { prop: 5 }
const mutatingObjectFunction = () => {
let temp = obj.prop;
obj.prop = 10;
return temp;
}
console.log(mutatingObjectFunction()); // 5
为什么它返回 5 而不是 10?
如果我将直接将对象而不是其属性分配给临时变量,那么它会给我更新的值。
const obj = { prop: 5 }
const mutatingObjectFunction = () => {
let temp = obj;
obj.prop = 10;
return temp;
}
console.log(mutatingObjectFunction().prop); // 10
为什么在 temp 变量中传递整个 object 或对象 property 时行为会有所不同?
【问题讨论】:
-
分配
obj.prop = 10后定义temp = obj.prop; -
@ zer00ne 在这种情况下,它会给我更新的,但我的问题是为什么它没有在上面的代码 sn-p 中给出变异值。为什么它在两个代码 sn-ps 中的行为不同。
标签: javascript object