ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。解构分为以下几种:
数值解构
1. 情况1:少 对 多 ——-解构成功
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
//只输出有赋值的变量
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
-----解构成功,属于不完全解构
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
2. 情况2: 多 对 少 ——–解构不成功
let [foo] = [];
let [bar, foo] = [1];
两个foo输出都是undefined
如果等号的右边可遍历的结构,那么将会报错。
// 报错
let [foo] = 1;
let [foo] = false;
let [foo] = NaN;
let [foo] = undefined;
let [foo] = null;
let [foo] = {};//不具备可以遍历的Iterato