让我解释一下。我有以下代码:
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函数的方式。我还想知道您将如何绕过这种奇怪的行为。
感谢您的时间。
答案 0 :(得分:2)
在第一行中,您将创建数组并将a
变量指向该数组。
在第二行let b = a;
中,您再次将b
变量指向a
数组。
因此a
和b
变量都将指向同一数组。更改数组时,a
和b
的值都将被更改。