3.1.1 基本用法
1:ES6允许按照一定模式从数组跟对象中提取值,然后对变量进行赋值。这被称为解构
2:从数组中提取值,按照对应位置对应赋值
let [a,b,c]=[1,2,3]
console.log(a) //1
console.log(b) //2
console.log(c) //3
3:本质,这种写法属于‘模式匹配’,只要等号2边的模式相同,左边的变量就会被赋予对应的值;如果解构不成功,值就是undefined
4:不完全解构:=左边的模式值匹配右边的一部分数组,这种情况下解构依然成功
let [a,b]=[1,2,3]
console.log(a) //1
console.log(b) //2
let [a,[b],c]=[1,[2,3],4]
console.log(a) //1
console.log(b) //2
console.log(c) //4
5:如果=右边不是数组,那么将会报错;
3.1.2 默认值
匹配成功则为新值,匹配不成功则为默认值
let [a=true]=[]
console.log(a); //true
let [b=1]=[null] //数组成员不===undefined的时候,默认值不会生效
console.log(b); //null
//x,y初值为1.匹配失败,则为初值
let [x=1,y=x]=[] //x=1,y=1
//x初值为1.匹配成功,初值被覆盖变为2,y初值为1.匹配失败,则为初值2
let [x=1,y=x]=[2] //x=2,y=2
//x,y初值为1.匹配成功,则为新值1,2
let [x=1,y=x]=[1,2] //x=1,y=2
let [x=y,y=1]=[] //referenceError
let [a,...b]=[1,2,3,4,5]
console.log(a) //1
console.log(b) //2, 3, 4, 5]