变量的解构赋值
- es6允许按照一定模式从数组和对象中提取值,并对变量赋值,这样叫解构。
let [x, y] = [1, 2]
x // 1
y // 2
- 解构不成功的,值为undefined
let [a, b] = [1]
console.log(`a`, a) // a 1
console.log(`b`, b) // b undefined
- 不完全解构,可以赋值成功
let [a] = [1, 2]
a // 1
- 解构赋值允许指定默认值
let [foo = true] = []
foo // true
- 对象也可以解构赋值,只是不像数组那样有序排列,而是根据命名进行匹配的。
let {foo, bar} = {bar: 'b', foo: 'a'}
foo // a
bar // b
- 如果变量名和属性名不一致,需要写成这样:
let {foo: name} = {foo: 'tim'}
name // 'tim'
- 对象的解构赋值其实是下面这样的形式简写,被赋值的是后者,而不是前者
let {foo: foo, bar: bar} = {foo: 'a', bar: 'b'}
- 函数的参数也可以进行解构赋值
function add([x, y]) {
return x + y
}
add([1, 2]) // 3