ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
var [a,b,c] = [1,2,3] //a=1.b=2.c=3
这种写法属于‘模式匹配’,只要等号两边的模式相同,左边的变量就会被赋予对应地值
let [aa, [[bb], cc] = [1, [[2], 3]] //aa=1, bb=2, cc=3
let [x, …y] = [1,2,3,4] //x=1,y=[2,3,4]
let [aaa,bbb] = [11] //aaa=11, bbb=undefined
解构值允许指定默认值
let [aaa = true] = [] //aaa = true
let [aa, bb=1] = [11] //aa=11, bb=1
let [xa, xb = 22] = [11, undefined] //xa = 11, xb = 22
es6内部使用严格的相等运算符判断一个位置是否有值,只有当一个成员严格等于undefined时才能使用默认值
默认值可以引用解构赋值的其他变量,但是该变量必须已经声明
let [d=1, e=d] = [] //d=1 e=1
let [g=2, h=g] = [2] //g=2, h=2
let [i=3, j=i] = [11,22] //i=11, j =22
let [k=m, m =1] = [] //报错,m未定义
let obj2 = {
ob:{
st:{
fir:1,
las:5
}
}
}
let {ob, ob:{st},ob:{st:{fir}}} = obj2 //ob={st: {…}} st={fir: 1, las: 5} fir=1