1 數(shù)組的解構(gòu)賦值
ES6 允許按照一定模式棍现,從數(shù)組和對象中提取值淮椰,對變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)蔫磨。
本質(zhì)上淘讥,這種寫法屬于“模式匹配”,只要等號兩邊的模式相同堤如,左邊的變量就會被賦予對應(yīng)的值蒲列。下面是一些使用嵌套數(shù)組進(jìn)行解構(gòu)的例子。
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
如果解構(gòu)不成功搀罢,變量的值就等于undefined蝗岖。
let [foo] = [];
let [bar, foo] = [1];
以上兩種情況都屬于解構(gòu)不成功,foo的值都會等于undefined榔至。
另一種情況是不完全解構(gòu)抵赢,即等號左邊的模式,只匹配一部分的等號右邊的數(shù)組洛退。這種情況下瓣俯,解構(gòu)依然可以成功。
let [x, y] = [1, 2, 3];
x // 1
y // 2
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
上面兩個(gè)例子兵怯,都屬于不完全解構(gòu)彩匕,但是可以成功。