- 解构赋值的意思是自动的将一组值对应到同样结构的一组变量中,文中原话是:按照一定模式,从数组和对象中提取值,对变量进行赋值
数组的解构赋值
- 可以以数组或嵌套数组的结构进行解构赋值
- 可以在解构赋值左侧表达式中为变量指定默认值(swift 也有类似的能力)。只有当一个数组成员严格等于undefined,默认值才会生效
对象的解构赋值
- 对象相当于是字典,按属性(key)进行解构
- 如果变量与属性不同名,可以用“模式”来指定匹配的属性
- 对象的解构可以嵌套,也可以用 “=” 指定默认值
- 尽量不要用已经声明的变量进行解构赋值
字符串的解构赋值
- 字符串也可以进行解构赋值。字符串既可以被当做数组按顺序解构其中的字符,也可以被当做对象解构它的属性(如 length 等)
数值和布尔值的解构赋值
- 等号右边是数值和布尔值,则会先转为对象
函数参数的解构赋值
- 函数的参数也可以使用解构赋值,与表达式的解构规则一致
- 也可以使用默认值,这个特性比较好,可以在部分情况下省去函数内部的参数合法性判断
圆括号问题
- 只要有可能,就不要在“模式”中放置圆括号
- 可以在变量中使用圆括号
- 个人看法最好还是都不用吧
用途
- 交换变量的值,这个写法有点玄幻。为什么这个写法能正确交换变量值?应该是等号右边的数组是对原变量进行了复制
- 从函数返回多个值
- 函数参数的定义
- 提取 JSON 数据
- 函数参数的默认值
- 遍历 Map 结构
- 输入模块的制定方法