外观
数组解构和对象解构
声明变量时,可以使用中括号包裹多个变量,像使用数组那样,典型的可用于交换变量。
const arr = [1, 2, 3];
const [a, b, c] = arr;
let d = 4;
let e = 5;
[d, e] = [e, d];若变量多于数组元素个数,多出的变量值为undefined。
const [a, b, c, d] = [1, 2, 3];
console.log(d); //undefined可为元素附默认值,在变量多出数组元素个数的时候,元素的值将为默认值。
const [a=0, b=0, c=0, d=0] = [1, 2, 3];
console.log(d); //0使用省略号可以给变量比数组元素个数多出的部分设为真数组。
const [a, b, ...c] = [1, 2, 3, 4];
console.log(c); //[3, 4]不想赋值给某个变量的,直接省略即可。
const [a, b, , d] = [1, 2, 3, 4];多维数组也支持解构。
const [a, b, [c, d]] = [1, 2, [3, 4]];JavaScript支持对象解构,在解构时要让变量名等于对象的属性名。
const {name, age} = {name: '张三', age: 18}
console.log(name, age)可以用冒号加别名的方法,将对象解构后赋值给不同名的变量。
const {name: username, age} = {name: "张三", age: 18}
console.log(username, age)数组解构和对象解构可以混用,但要保证数组的顺序一致和对象的名称一致。
const [{name: name1, age: age1}, {name: name2, age: age2}] = [{name: "张三", age: 18}, {name: "李四", age: 19}]
console.log(name1, age1, name2, age2)