可以将 数组
,对象
,字符串
“拆包” 至一系列变量中,被称为解构(Destructuring)ES6
数组
按照位置进行解构
对象
按照属性名进行解构
字符串
默认值
当右边的值 严格等于(===
) undefined
时,默认值才会生效
如果默认值是表达式,则是惰性求值的(只有右边是 undefined 才会进行求值)
主要用途
- 同时从某个数组或对象中取多个值
- 交换变量的值:
[a, b] = [b, a]
for...of
循环中的循环变量:for (let [key, value] of map)
- 函数定义时的参数
- catch 绑定变量
- 解构赋值是浅拷贝
- 剩余参数的解构赋值只能作为最后一个
- 如果解构不成功,变量的值就等于 undefined
- 对已声明的变量进行解构,则需要注意加括号:
({x} = {x: 1})
,不然 JS 引擎会将 {x}
理解为一个代码块产生语法错误