javascript - 通过展开运算符进行数组解构

标签 javascript arrays destructuring

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的第一个数组成员呢?

最佳答案

如果你有

[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];

关于javascript - 通过展开运算符进行数组解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47740420/

相关文章:

javascript - 为什么我可以记录和警报从 jQuery.width() 返回的值,但不能在赋值中使用?

javascript - 使用新窗口而不是网络 worker

javascript - 未捕获的类型错误 : Cannot call method 'toLowerCase' of undefined (Youtube API)

javascript - 使用map或reduce在javascript中打印斐波那契数列

arrays - 从数组中删除项目

javascript - Node JS/V8 解构错误?

javascript - 在 mac 上使用 cython 和 emscripten 将简单的 python 程序编译为 javascript

ios - 对 NSMutableArray 进行排序

javascript - JavaScript 中的解构赋值

javascript - 解构对象参数,还要引用参数作为对象?