分析解构
变量解构
- 单层
var {foo}=pony;等同 var foo=pony.foo;
var {foo:baz}=pony;等同var baz=pony.foo;
var {foo=‘bar’}=baz; //如果baz.foo为undefined,则foo取默认值bar
var {foo,bar:baz}={foo:0,bar:1};//foo=0;baz=1
- 多层
var {foo:{bar:deep}}={foo:{bar:‘baz’}};//deep=‘baz’
var {foo}={}//默认值为undefined
//多层未定义则报错
var {foo:{bar}}={};
数组解构
var [a,b]=[0,1];//a=0;b=1;
//可以忽略剩余赋值
var [a,b]=[0,1,2];//a=0;b=2;
//交换值
[a,b]=[b,a];
函数参数解构
function foo(bar=2){};//默认参数
function foo(bar={a:1,b=2}){};//函数默认参数可以是对象
- 完全解构
function foo({a=1,b=2}){}; - 如果没参数设为空
function foo({a=1,b=2}={}){};