对象解构
let {name:a,age:b} = {age:20,name:'abc'}; //a
let {name,age} = {age:20,name:'abc'}; //name
let {abc:name,age:age} = {age:20,name:'abc'}; //错误 name为变量, abc是对象中匹配的值
对象解构可以设置默认值
let {x=3} ={x:5};
x; //5
let {x=3} ={};
x; //3
let {x=3} ={x:undefined};
x; //3
let {x=3} ={x:null};
x; // null
let {x,y=3} ={x:5};
//x 5 y 3
let {x:y=10} ={x:5}; //x匹配模式 Y变量
//y 5
let {x:y=10} ={};
//y 10
let {x:y=10} ={y:5}; //10
let {x} ={y:5}; //undefined
字符串解构
var [a,b,c] = 'hello'; // a = 'h',b = 'e',c = 'l';
函数参数的解构赋值
function fun([a,b]){
return a+b;
};
fun([2,5]); //7
//默认值
function fun([a=0,b=0]){
return a+b;
};
fun([]); //0
function fun([a=0,b=0]){
return a+b;
};
fun([3]); //3
JSON解构
let data ={
name:'abc',
age:18,
friends:['x','y','z'],
obj:{a:'a',b:'b'}
};
let {name,age:a=20,friends,obj} = data;
//a =18 obj.a friends[1]