为什么我可以将objectA分配给objectB并通过更改Javascript中的objectB来更改objectA&#

Why I can assign objectA to objectB and change objectA's property by changing objectB in Javascript?

本文关键字:objectA objectB Javascript 中的 我可以 分配 为什么      更新时间:2023-09-26

在JavaScript中

我刚发现

var a = {};
a.name = "132";
var b = a;
console.log(b);
b.name = "efg";
console.log(a);//**display "123","efg"**

似乎我可以将objectA分配给objectB,并通过在Javascript中更改objectB来更改objectA的属性。

但是不能工作:

var aa = 1;
var bb = aa;
console.log(bb);
bb = 2;
console.log(aa);//**display "1","1"**

我只是想知道为什么会发生这种情况?

JSFiddle https://jsfiddle.net/Pencil_Case/2wxxmgvx/3/

因为当你将一个对象赋值给另一个对象时,它不会被复制,只会给出引用。

在Javascript中,复合数据类型(Object, array)通过引用 复制
var b = a; // Get the reference of a and assign to b

如果您想获得对象的副本,请使用assign

var b = Object.assign({}, a);