es6解构赋值
我们经常定义许多对象和数组,然后有组织的从中提取相关的信息片段。在es6中添加了可以简化这种任务的新特性:解构。解构是一种打破数据结构,将其拆分为更小部分的过程
let options={
repeat:true,
save:false
}
let repeat =options.repeat,
save=options.save;
如果要提取更多变量,则必须依次编写类似的代码来为变量赋值,如果其中还包括嵌套结构,只靠遍历是找不到真实信息的,必须要深挖整个数据结构才能找到所需数据,es6添加了结构赋值,将数据结构打散的过程变得更加简单,可以从打散后更小的部分中获取所需信息
数组解构(数组的解构是按照次序排列的,变量取值由位置决定)
let colors=['red','green','blue']
let [firstColor,secondColor]=colors
log(firstColor)
log(secondColor)
let [ , , thirdColor]=colors
log(thirdColor)
解构赋值
firstColor='black'
secondColor='purple'
[ firstColor , secondColor] =colors
log(firstColor)
log(secondColor)
■ 变量交换
es5中须引入第三个临时变量
let a=1,
b=2,
tmp;
tmp=a;
a=b;
b=tmp;
log(a)
log(b)
在es6中
let a=1,
b=2;
■ [a,b]=[b,a]
log(a)
log(b)
默认值
let colors=['red']
let [firstColor,secondColor='green']=colors
log(firstColor)
log(secondColor)
嵌套数组解构赋值
let colors=['red',['green','lightgreen'],'blue']
let [ firstColor,[ secondColor]]=colors
log(firstColor)
log(secondColor)
■ 不定元素 ...
let colors=['red','green','blue']
let [firstColor,...restColors] =colors
log(firstColor)
log(restColors.length)
log(restColors[0])
数组复制
es5克隆数组
var colors = ['red','green','blue']
var cloneColors=colors.concat()
■ es6克隆
let colors = ['red','green','blue']
■ let [...cloneColors]=colors
log(cloneColors)
let [a,[b],[d]]=[1,[2,3],4]
log(a,b,c)
对象解构(而对象的属性是没有顺序的,变量必须与属性同名才能取到正确的值)
let node ={
name:'miao'
age:35
}
let { name ,age}=node
log(name)
log(age)
node.name的值被储存在名为name的变量中;node.age的值被储存在age的变量中
解构赋值
let node ={
name:'miao'
age:35
},
name="erwei",
age="20";
({name,age}=node) 这里一定要小括号,转化为表达式
log(name)
log(age)
默认值
let node ={
name:'miao'
age:35
}
let { name ,age ,sex} =node
log(sex)
let { name ,age ,sex = '男'} =node
log(sex)
嵌套对象解构
let node={
type:'abc',
name:'foo',
loc:{
start:{
line:1,
colume:1
},
end:{
line:1,
column:4
}
}
}
let {loc:{start}} =node
log(start)
let { f1,f2}={f1:'test1',f2:'test2'}
log(f1,f2)
let {f1:rename,f2}={f1:'test1',f2:'test2'}
log(rename,f2)