当我将一个对象变量分配给另一个变量时,旧变量对象的值将更新为新变量值

问题描述 投票:0回答:1

let xyz = { a:5, b:6, c:7 };

let pqr = xyz;

pqr.a=8

console.log(xyz)

在上面的代码中,如果我更新一个新变量,旧变量会自动更新。

为什么会这样?

我们可以分别使用这两个变量吗?

javascript node.js object
1个回答
0
投票

在 JavaScript 中,对象是通过引用而不是值来分配的。 因此,当 ding

let pqr = xyz;
时,您并不是在创建一个新对象,而是指向同一对象的新引用。

当您修改

pqr.a
时,您正在修改
xyz
所引用的同一对象。 因此,通过
pqr
所做的任何更改也将反映
xyz
,因为它们指向相同的基础设施。

要解决该问题,您可以创建该对象的副本。 使用扩展运算符 (...) 或

Object.assign()
方法创建浅副本。

let xyz = { a: 5, b: 6, c: 7 };

//spread operator to create a shallow copy
let pqr = { ...xyz };

//Or using Object.assign
//let pqr = Object.assign({}, xyz);

pqr.a = 8;

console.log(xyz); //{ a: 5, b: 6, c: 7 }
console.log(pqr); //{ a: 8, b: 6, c: 7 }

© www.soinside.com 2019 - 2024. All rights reserved.