如果a = b,那么b = a怎么会这样呢?

时间:2019-01-02 15:12:37

标签: javascript arrays

让我解释一下。我有以下代码:

let a = [1, 2, 3];
let b = a;
b.splice(2, 1);
console.log("a: " + a);
console.log("b: " + b);

我本来希望得到类似的东西:

a = [1, 2, 3];
b = [1, 2];

但是,运行代码后,结果是“ a”和“ b”均等于[1、2]。我真的很困惑,因为应该只为“ b”分配一个“ a”的副本,而不是充当某种指向“ a”的指针。我想知道是否是因为JS处理数组(对象)的方式是否不同于特定于splice函数的方式。我还想知道您将如何绕过这种奇怪的行为。

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

在第一行中,您将创建数组并将a变量指向该数组。 在第二行let b = a;中,您再次将b变量指向a数组。

因此ab变量都将指向同一数组。更改数组时,ab的值都将被更改。