数组解构和扩展运算符

leo*_*fed 2 javascript arrays destructuring

我不是 100% 清楚这段代码是如何工作的:

var a = [1, 2, 3];

[x, y, ...a ] = [0, ...a, 4];

// OUTPUT:  [0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我正在a使用...运算符解构数组。

我期待在第二行会进行一系列任务。

x将被分配为0,y将被分配给...a(其传递数组中的元素a作为单独的值)。

但是,我不清楚如何将...aget 分配给 4。实际上,JS 在执行以下操作时会抛出异常:

...a = 4;
// Uncaught SyntaxError: Rest parameter may not have a default initializer
Run Code Online (Sandbox Code Playgroud)

为什么这段代码以 end 输出修改后的数组4,而不是抛出异常?这是如何工作的?

Nik*_*wal 5

它的执行方式如下

var a = [1, 2, 3];
[x, y, ...a ] = [0, ...a, 4];
[x, y, ...a ] = [0, 1, 2, 3, 4];
Run Code Online (Sandbox Code Playgroud)

这意味着将 RHS 数组中的第一个值分配给x,将 RHS 数组中的第二个值分配给y,其余值分配给a

因此,的值x0y1a[2, 3, 4]