ES6第三章-变量的解构赋值
1、数组的解构赋值
基本用法
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。
Set 结构也可以使用数组的解构赋值。
默认值
解构赋值允许指定默认值。
只有当一个数组成员严格等于undefined,默认值才会生效。
默认值可以引用解构赋值的其他变量,但该变量必须已经声明。
对象的解构赋值
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
解构失败则对象的值变为undefined;同时,
对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。
也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
与数组一样,解构也可以用于嵌套结构的对象。
默认值
对象的解构也可以指定默认值。
字符串的解构赋值
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
数值和布尔值的解构赋值
解构赋值时,如果等号右边是数值和布尔值,则会先转为对象
函数参数的解构赋值
圆括号问题
只要有可能导致解构的歧义,就不得使用圆括号。
不能使用圆括号的三种情况
1、变量声明语句
2、函数参数
3、赋值语句的模式
用途
1、交换变量的值
2、从函数返回多个值
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。
3、函数参数的定义
4、提取json数据
5、函数参数的默认值
6、遍历Map结构