ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构,解构的本质属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。如果解构不成功,变量的值就等于undefined。
数组解构:
1.完全解构
let [a,b,c,d,e]=[1,2,3,4];
2.不完全解构
let [a,b,c,[d],e]=[1,2,3,[4,5,6],7];
console.log(a,b,c,d,e);
3.默认值解构
默认值生效条件 当右侧匹配严格模式为undefiend
let [a=1,b=2,c=3]=[4,5,6];
console.log(a,b,c);
4.集合解构 拓展运算符 将没有对应的数据合在一起输出
let [a,...b]=[1,2,3,4]; //1 [ 2, 3, 4 ]
// 5.拓展运算符 进行了一个深拷贝
let a=[1,2,3,4,5];
let [...arr]=a;
console.log(arr);
console.log(arr===a);
//[ 1, 2, 3, 4, 5 ]
false
对象解构:
1.对象解构 属性名必须和变量名一致才能取到正确的值
let {name,age}={name:'zhangsan',age:12};
console.log(name,age);
2.属性名和变量名不一致 给属性名重命名
let {name:a,age:b}={name:'zhangsan',age:12};
console.log(a,b); //'zhangsan',12
3.嵌套结构
let obj={p:['hello',{y:"world"}]};// a b取到hello world
let {p:[a,{y:b}]}=obj;
console.log(a,b);
4.对象默认值结构
let {x:y=8}={};
console.log(y); //8