什么是解构赋值?
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
// MDN官方
let a, b, rest;
[a, b] = [10, 20];
console.log(a);
// expected output: 10
console.log(b);
// expected output: 20
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(rest);
// expected output: Array [30,40,50]
数组的解构赋值
// 解构成功
let [a, b, c] = [1, 2, 3]; a 1,b 2,c 3
let [foo, [[bar], baz]] = [1, [[2,4], 3]]; // foo 1,bar 2,baz 3
let [ , , third] = ["foo", "bar", "baz"]; // third "baz"
let [head, ...tail] = [1, 2, 3, 4]; // head 1,tail [2,3,4]
// 解构失败
let [foo] = []; // foo undefined
let [bar, foo] = [1]; // foo undefined
// 只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。反之解构失败
// 报错
let [foo] = 1;
let [foo] = false;
let [foo] = NaN