1. 数组的解构
let [a,b,c] = [1,2,3]
- 默认值
let [a=3] = [4]
- e6内部使用严格相等运算符(===)来判断一个位置是否有值,所以当一个数组成员严格相等于undefined,默认值才会生效。
let [a = 3] = [undefined]
a
let [a = 5] = [null]
a
2.对象的解构
const obj = { name: 'xiaoming', age: 444 }
const { name, age } = obj;
name
age
- 变量名与属性名不一致
const obj = { name: 'xiaoxiao' }
const { name: newName } = obj
newName
- 支持嵌套
const obj = { student: { name: 'xiaoming', age: 27}}
const { student: { name, age }} = obj
name
age
- 支持默认值
const obj = { name: 'xiaoming', age: 444 }
const { sex = 'man' } = obj
sex //man
3.字符串解构
const [a, b, c] = 'hel'
a
b
c
4.函数参数的解构
function add([x,y]) {
return x + y;
}
add([1,2])
- 默认值
function add({ x = 1, y = 2 }) {
return x + y
}
add({})
function add({ x, y } = { x: 0, y: 1}) {
return x + y
}
add({})
注意以上两者的区别,一个是给参数中的变量赋予了默认值,一个是给函数的参数赋予了默认值,两者是不一样的