变量结构
es6允许按照一定的模式,从对象和数组中提取值,赋值给对应的变量。
只要右边的变量能和左边的值按照一定的规则匹配,就能被赋值。
数组变量结构
1.完全结构
同时给a,b,c三个变量赋值
let [a,b,c] = [1,2,3];
console.info(a);//1
console.info(b);//2
console.info©;//3
2.嵌套结构
let [a,[b,[c]]] = [1,[2,[3]]];
console.info(a);//1
console.info(b);//2
console.info(c);//3
3.不完全结构
没有被完全结构的变量会被赋值给undefined
let [a,b] = [1];
console.info(a);//1
console.info(b);//undefined
4.支持默认值
let [a=1,b=2,c=3] = [1];
console.info(a);//1
console.info(b);//2
console.info(3);//3
5.剩余运算符
let [a,...b] = [1,2,3,4];
console.info(a);//1
console.info(b);//[2,3,4]
对象变量结构
1.完全结构
对象的结构,是根据变量的名称来的,默认根据右边的表达的属性值,找到到同名的表达式进行赋值。
let {a=1,b=2,c} = {b:3,a:4,c:{"x":1,"y":2}};
console.info(a);//4
console.info(b);//3
console.info(c);//{"x":1,"y":2}
如果属性值和变量名不同,就需要明确指定
let {a:x,b=2} = {a:3};
console.info(x);//3
console.info(b);//2
函数参数解构
可以给函数参数用于结构,赋值
function test([a,b]){
return a+b;
}
console.info(test([1,2]));//3