解构赋值
- ES6允许按照一定模式从数组或对象中提取值,然后对变量进行赋值,称为解构
一. 数组的解构解构
- 支持不完全解构
- 右边不是数组会报错
- 允许变量有默认值,只有对应数组成员严格等于undefined,对应变量的默认值才有效
- 解构上失败变量的默认值是undefined
二. 对象的解构赋值
-
属性没有次序
-
内部机制:先找到同名的属性,再赋值给对应的变量
-
let {foo}={foo: 'hello'} // 其实是下面形式的简写 let {foo: foo}={foo: 'hello'} // 等号左边的对象冒号左边称为模式,右边才是变量
-
-
如果解构模式是嵌套的对象,子对象所在的父属性不存在,将会报错
三. 字符串的解构赋值
- 先将字符串转换成类似数组的对象
四. 数值和布尔值的解构赋值
- 先转成对象
五. undefined和null
- 无法转为对象,会报错
六. 圆括号的使用
- 只要可能导致解构的歧义,就不能使用圆括号
不能是使用圆括号的情况
- 变量声明语句
- 函数参数
- 赋值语句的模式
可以使用圆括号的情况
- 赋值语句的非模式部分
\