ES6新特性之解构赋值

一.概念
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。

在ES6语法中可以写为:
ES6新特性之解构赋值
如果解构不成功,变量的值就等于undefined。

如果等号的右边不是数组(不是可遍历的结构),将会报错。

解构赋值不仅适用于var命令,也适用于let和const命令。
ES6新特性之解构赋值
ES6新特性之解构赋值
二.设置默认值
解构赋值允许指定默认值。当等式右边没值或是undefined时,使用默认值。

语法 let [变量=默认值]=[赋值]
ES6新特性之解构赋值

三.对象的解构赋值
解构不仅可以用于数组,还可以用于对象。
ES6新特性之解构赋值
注意变量必须与属性同名,才能取到正确的值,位置顺序没关系。

如果变量名与属性名不一致,必须写成下面这样:
ES6新特性之解构赋值

四.字符串的解构赋值
字符串也可以解构赋值。这是因为,此时的字符串被转换成了一个类似数组的对象。
ES6新特性之解构赋值
类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。
ES6新特性之解构赋值

五.函数参数的解构赋值

函数的参数也可以使用解构赋值。
ES6新特性之解构赋值
上面代码中,函数add的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量x和y。对于函数内部的代码来说,它们接收的参数就是x和y。

函数参数的解构也可以使用默认值。
ES6新特性之解构赋值
上面代码中,函数move的参数是一个对象,通过对这个对象进行解构,得到变量x和y的值。如果解构失败,x和y等于默认值。

六.不能使用圆括号的情况
ES6的规则,只要有可能导致解构的歧义,就不得使用圆括号。因此,建议只要有可能,就不要在解构中放置圆括号。

不能使用圆括号的情况
1.变量声明语句中,不能带有圆括号。
ES6新特性之解构赋值
2.函数参数中,模式不能带有圆括号
3.函数参数中,模式不能带有圆括号
ES6新特性之解构赋值

七.解构赋值的使用场景

1.交换变量的值
ES6新特性之解构赋值
2.方便从函数取值
ES6新特性之解构赋值
3.函数参数的定义
ES6新特性之解构赋值
4.提取JSON数据
ES6新特性之解构赋值
5.函数默认参数值
ES6新特性之解构赋值