Object Deconstructing without Declaration

JavaScript

在 JavaScript 中,新的规范定义了 object rest spread 运算符,可以用于对象的解构。

简单的用法如下:

const { value } = { value: 1, others: 2 };

除了这种解构同时赋值给新变量的情况,也可以通过解构运算,赋值给一个已有的变量:

let value = 'old';
({ value } = { value: 'new', others: 'value' });

这里需要注意的一点是,解构加赋值的运算,必须要加上括号。下面的写法会报语法错误:

let value = 'old';
{ value } = { value: 'new', others: 'value' };

会报错的原因是,前面的 { value } =,如果不加上括号,会被当成一般的代码块(Block),而不是一个解构的对象(Object),因此解析语法树的时候,在 = 这里就报错了(Uncaught SyntaxError: Unexpected token '=')。注:如果不加最后的 ;,语法也是正确的。

更多相关的相关介绍,可以参考 MDN