数组的解构赋值
基本用法
所谓解构就是从数组和对象中提取值,对变量进行赋值
以前,为变量赋值,只能直接指定值。ES6 允许写成下面这样
let [a, b, c] = [1, 2, 3];
上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。
同样,可以对数值进行嵌套,下面是使用嵌套数组进行解构的例子:
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 // []
如果解构不成功,变量的值就等于undefined
。
let [foo] = [];
let [bar, foo] = [1];
以上两种情况都属于解构不成功,foo
的值都会等于undefined
。
注:如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。
rest 参数
我们可以使用 rest 来接受赋值数组的剩余元素,不过要确保这个 rest 参数是放在被赋值变量的最后一 个位置上。例:
let [name1, name2, ...rest] = ["Julius", "Caesar", "Consul