传统的赋值方式
let x = 1;
let y = 2;
let z = 3;
//或
let x = 1,
y = 2,
z = 3;
ES6中采用数组模式 运算符
let [x,y,z] = [1,2,3];
let arr = [1,2,3];
let [a,b,c] = arr;
模式匹配,一一对应
let [a,,c] = [1,2,3]; //a = 1; c = 3;
let [a,b,c] = [1,2]; //c = undefined
带默认值
let [a = 1] = ['a']; // a = 'a';
let [a = 1] = []; // a = 1;
需要特别注意,如果解构的值为undefined,则取默认值
let [b = 1] = [undefined]; //1
let [b = 1] = [null]; //null
解构的对象不仅仅可以是单一的值,也可以是对象或数组
let [a,b,c] = [1,[2,3],4];
let [a,b,c] = [1,{x:'x'},4];
在对象的结构中,如下例,name是匹配模式,a才是变量
let {name:a,age:b} = {age:20,name:'abc'}; //a = 'abc';b = 20;
let {name,age} = {age:20,name:'abc'}; //相当于let {name:name,age:age} = {age:20,name:'abc'}
let {abc:name,age:age} = {age:20,name:'abc'}; //错误 name为变量, abc是对象中匹配的值