在接收数据的地方(比如赋值的左边),解构使你使用模式去获取部分数据。
下面的代码是解构的一个例子:
let obj = { first: 'Jane', last: 'Doe' };
let { first: f, last: l } = obj; // (A)
// f = 'Jane'; l = 'Doe'
在行 A 解构了 obj
:通过左边的模式,运用赋值操作符(=)从里面获取数据,并将数据赋值给变量 f
和 l
。这些变量事先自动声明好,因为该行以 let
开始。
也可以解构数组:
let [x, y] = ['a', 'b']; // x = 'a'; y = 'b'
解构可以用于下列情形:
// Variable declarations:
let [x] = ['a'];
const [x] = ['a'];
var [x] = ['a'];
// Assignments:
[x] = ['a'];
// Parameter definitions:
function f([x]) { ··· }
f(['a']);
也可以在一个 for-of
循环中解构:
// Handled like a variable declaration:
for (let [k,v] of arr.entries()) ···
// Handled like an assignment
for ({name: n, age: a} of arr) ···