为什么复制的数组之间有关系?

时间:2019-04-10 14:34:02

标签: javascript arrays

我需要一些帮助来理解为什么当我通过引用复制数组时为什么在数组之间创建关系。请看以下示例:

let a = [1,2,3];
let b = a;
b.push(4);
console.log(b); // [1,2,3,4]
console.log(a); // [1,2,3,4]
a === b; // true

由于某些原因,当我修改{b}时(我希望它们是独立的数组),{a}会发生变化。

这种关系对于变量不是正确的,它出现了。请看以下示例:

let a = 'test';
let b = a;
b = 'test1';
console.log(b); // "test1"
console.log(a); // "test"
a === b; // false

有人知道数组的行为背后的原因吗?

1 个答案:

答案 0 :(得分:0)

数组是按引用复制的,因此在您写时:

let b = a;

您在a中引用b

正确的方法:

let b = [...a]

let b = a.slice(0);