Javascript取消绑定变量

Javascript取消绑定变量,javascript,arrays,Javascript,Arrays,我有以下代码,复制变量值,然后更改其值 vara=[{name:'johndoe'}]; var b=a; document.write(b[0].name+''); document.write(a[0].name+''); b[0]。名称='Jane Doe'; document.write(b[0].name+''); document.write(a[0].name+'')您只是将a-引用分配给b。您可能要做的是复制数组,以便a的更改不会反映到b。有关JavaScript中的不同分配,

我有以下代码,复制变量值,然后更改其值

vara=[{name:'johndoe'}];
var b=a;
document.write(b[0].name+'
'); document.write(a[0].name+'

'); b[0]。名称='Jane Doe'; document.write(b[0].name+'
');
document.write(a[0].name+'
')您只是将
a
-引用分配给
b
。您可能要做的是复制数组,以便
a
的更改不会反映到
b
。有关JavaScript中的不同分配,请参见

再看一看。这是关于不同数组复制方法的速度。 快速回答是:

var b = a.slice();
slice()
方法使用与原始数组相同的元素创建一个新数组。但要小心,这只是一个小问题


您还可以使用
JSON.stringify()
JSON.parse()
方法进行深度复制。

您必须深度克隆
a
,一种方法是
var b=JSON.parse(JSON.stringify(a))
通过引用将变量a的可能副本传递给b。由于a和b具有相同的引用,因此每当您更改其中一个上的任何内容时,它也会更改另一个。为了防止这种情况发生,您需要将a深度复制到b上,复制所有单独的属性。对象(包括数组)在JavaScript中通过引用分配。如果需要维护两个独立的
.name
值,则必须手动复制它们。很抱歉,如果重复,我在搜索之前的答案时不知道正确的术语:(