关于数组解构的MDN documentation是非常明显的,但是,我无法理解在解构数组时幕后发生的事情:
let Arr = [1, 3, 5, 6];
let newArr = [];
[newArr[0], ...newArr] = Arr;
console.log(Arr); // returns [1, 3, 5, 6]
console.log(newArr); // returns [3, 5, 6]
newArr
如何不继承Arr
的第一个数组成员?
答案 0 :(得分:3)
如果你有
[x, ...y] = Arr;
就像
x = Arr[0];
y = Arr.slice(1);
所以当你有
时[newArr[0], ...newArr] = Arr;
就像
newArr[0] = Arr[0];
newArr = Arr.slice(1);
解构涉及的任务从左到右发生。住:
const listener = {
get foo() {
return {
set bar(value) {
console.log('setting bar');
},
};
},
set foo(value) {
console.log('setting foo');
},
};
[listener.foo.bar, ...listener.foo] = [1, 2, 3];
答案 1 :(得分:0)
它有效,但它会用其余参数覆盖索引零处的第一个值。
let array0 = [1, 3, 5, 6],
array1 = [],
array2 = [];
[array2[0], ...array1] = array0;
console.log(array0); // [1, 3, 5, 6]
console.log(array1); // [3, 5, 6]
console.log(array2); // [1]

.as-console-wrapper { max-height: 100% !important; top: 0; }