基础用法
let [a, b, c] = [1, 2, 3];
let [a, [[b], c]] = [1, [[2], 3]];
注意:数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值:
let { a, b } = { a: 'aaa', b: 'bbb' };
a // "aaa"
b // "bbb"
let { c } = { a: 'aaa', b: 'bbb' };
c // undefined
默认值
上面代码里的 c,因为对象中不存在这个属性,会被赋值为 undefined ,如果不希望不存在这个属性获取的是 undefined ,可以为其设置一个默认值:
let { a, b } = { a: 'aaa', b: 'bbb' };
a // "aaa"
b // "bbb"
let { c = 'ccc' } = { a: 'aaa', b: 'bbb' };
c // "ccc"
别名解构
如果要赋值的对象属性名和属性名不一样,可以别名结构:
const obj = {
a: "aaa",
b: "bbb",
};
const { a: c, b } = obj;
console.log(c); //"aaa"
console.log(b); //"bbb"
REST解构
REST解构可以从一个对象中解构一个属性,让剩下的属性结构单独成为另一个变量
const obj = {
a: "aaa",
b: "bbb",
c: "ccc",
};
const { a, ...abc } = obj;
console.log(a); //"aaa"
console.log(abc); //"{b: 'bbb', c: 'ccc'}"
|