这个交换数组元素的函数是如何工作的?

How does this function to swap array elements work?

我在这里看到这个函数可以交换两个数组元素,但我似乎无法弄清楚它是如何工作的。看起来正在进行某种数组解构(?)。我只是不明白原来的 data-array 是如何以及为什么实际改变的。

有人可以向我解释一下这是如何工作的吗?

const swap = (a, i, j) => {
  [a[i], a[j]] = [a[j], a[i]]  // ???
}

const data = [1, 2, 3, 4]

swap(data, 0, 2)

console.log(data)

从右侧开始:

[a[j], a[i]]

这将创建一个包含两个元素的新数组:索引 j 处的元素,后跟索引 i.

处的元素

左边是解构

[a[i], a[j]] = 

所以这相当于以下内容:

a[i] = theNewArray[0];
a[j] = theNewArray[1];

由于这是变异 a,任何对数组的引用都可以感受到这些变化,因此 data 将“看到”变化。