1. 成功解构赋值
#情况1:
let [a, b, c] = [1, 2, 3];
#情况2:
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
#情况3:
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
#情况4:
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
#情况5:
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
2. 解构不成功
let [foo] = []; foo // undefined
let [bar, foo] = [1]; bar, foo //1, undefined
如果结构不成功,变量的值就会等于undefined
3. 不完全解构
等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。
let [x, y] = [1, 2, 3];
x // 1
y // 2
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
4. 数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值
let [x, y, z] = new Set(['a', 'b', 'c']);
x // "a"
5. 解构赋值允许指定默认值
let [foo = true] = [];
foo // true
网友评论