我想要交换数组arr的成员。 但是输出结果却是[0, 0]。 我期望得到的是[1, 0]。
const arr = [0, 1];
[arr[1],arr[0]] = arr;
console.log(arr)
但在执行此操作时,它输出了 [1, 0],我认为我理解了。
const arr = [0, 1];
[arr[1],arr[0]] = [arr[0], arr[1]];
console.log(arr)
我想要交换数组arr的成员。 但是输出结果却是[0, 0]。 我期望得到的是[1, 0]。
const arr = [0, 1];
[arr[1],arr[0]] = arr;
console.log(arr)
但在执行此操作时,它输出了 [1, 0],我认为我理解了。
const arr = [0, 1];
[arr[1],arr[0]] = [arr[0], arr[1]];
console.log(arr)
arr
数组进行了修改,又从同一数组中获取其值,就像这样:
const arr = [0, 1];
// Here, `arr` is `[0, 1]`
arr[1] = arr[0]; // <=== Changes `arr[1]`...
// Now, `arr` is `[0, 0]`
arr[0] = arr[1]; // <=== ...so the new value of `arr[1]` is used here.
// Still `[0, 0]`
arr
之后,仍然使用arr[1]
。arr
指向的数组,但只有在从数组中获取旧值并将其放入一个新数组后才这样做。const arr = [0, 1];
const newArray = [arr[0], arr[1]];
// Here, `arr` is `[0, 1]`, `newArray` is `[0, 1]`
arr[1] = newArray[0]; // <=== Changes `arr[1]`...
// Here, `arr` is `[0, 0]`, `newArray` is still `[0, 1]`
arr[0] = newArray[1]; // <=== ...but that doesn't affect `newArray[1]`, so this works.
// Here, `arr` is `[1, 0]`, `newArray` is still `[0, 1]`
这行代码是可行的,因为虽然使用解构赋值改变了arr[1]
的值,但是arr[0]
的新值并不是来自arr[1]
,而是来自newArray[1]
。
arr[1]
变成了0
,接着arr[0]
也变成了0
。 - evolutionxbox