解构赋值

108 阅读1分钟

解构赋值

  • ES6允许按照一定模式从数组或对象中提取值,然后对变量进行赋值,称为解构
一. 数组的解构解构
  • 支持不完全解构
  • 右边不是数组会报错
  • 允许变量有默认值,只有对应数组成员严格等于undefined,对应变量的默认值才有效
  • 解构上失败变量的默认值是undefined
二. 对象的解构赋值
  • 属性没有次序

  • 内部机制:先找到同名的属性,再赋值给对应的变量

    • let {foo}={foo: 'hello'} // 其实是下面形式的简写
      let {foo: foo}={foo: 'hello'}
      // 等号左边的对象冒号左边称为模式,右边才是变量
      
  • 如果解构模式是嵌套的对象,子对象所在的父属性不存在,将会报错

三. 字符串的解构赋值
  • 先将字符串转换成类似数组的对象
四. 数值和布尔值的解构赋值
  • 先转成对象
五. undefined和null
  • 无法转为对象,会报错
六. 圆括号的使用
  • 只要可能导致解构的歧义,就不能使用圆括号
不能是使用圆括号的情况
  • 变量声明语句
  • 函数参数
  • 赋值语句的模式
可以使用圆括号的情况
  • 赋值语句的非模式部分

\