前言: ES6允许按照一定的模式从数组和对象中提取值,然后对对象进行赋值,这被称为结构
一. 数组的解构赋值
//以前的变量赋值
let a = 1;
let b = 2;
let c = 3;
//可使用ES6的解构赋值写为以下格式,表示为可从数组中提取值,按照对应位置对变量进行赋值
let [a,b,c] = [1,2,3]
- 只要等到两边的模式相同,左边的变量就会被赋予对应的值
let [head,...tail] = [1,2,3,4]
head //1
tail //[2,3,4]
- 解构不成功,变量的值为undefined;等号右边的值不是数组,将会报错
- 解构赋值允许设置默认值
let [x ,y ='b'] =['a'] //x='a' y='b'
二. 对象的解构赋值
- 变量必须与属性同名才能取到值,与位置无关
let {x , y} = { y:'bbb', x:'aaa'}
x // 'aaa'
y // 'bbb'
- 与数组一样,结构也可以用于嵌套的对象
let obj = {
p:['Hello',{y:'World'}]
}
let {p,p:[x,{y}]} =obj;
p // ['Hello',{y:'World'}]
x // Hello
y // World
三. 字符串的解构赋值
- 字符串也可以解构赋值,因为字符串被转换成了一个类似数组的对象
const [a,b,c,d,e] = 'hello'
a // 'h'
b // 'e'
c // 'l'
d // 'l'
e // 'o'
let {length : len } = 'hello'
len // 5