http://es6.ruanyifeng.com/#docs/destructuring 详细内容见ES6详解,以下为笔记
数组解构
let [a,b,c]=[1,2,3];
左边基本数据结构与右边相同,数据量可以不完全相同,按顺序赋值
变量赋值优先级为 右边为null > 右边有值(不为undefined)>默认值 >表达式赋值/其他变量赋值
let [a=1]=[null]; a=null
let [a=1]=[2]; a=2
function foo(){
return ='foo'
}
let [a=foo()]=[2] a=2
let [a=1,b=a]=[1,2] a=1,b=2
对象的解构
对象的解构与数组结构的最大不同点在于,对象的解构通过键名进行赋值
let {x1:x,y1:y}={x1:1,y1:2}
x1,y1是赋值模式
被赋值的变量是X 和 Y
x=1 ,y=2
简写 let{x,y}={x:1,y:2}
字符串解构
与数组解构相同,将字符串拆分为数组进行赋值
let [a,b,c,d,e]='hello',
相当于 let[a,b,c,d,e]=['h','e','l','l','o']