10.7 更多数组解构特性
10.7.1 省略
在解构过程中,省略使用数组“空洞”语法来跳过元素:
let [,,x] = ['a', 'b', 'c', 'd']; // x = 'c'
10.7.2 剩余操作符(...)
剩余操作符使你能够提取剩余的数组元素到一个数组里面。你可以在数组模式的最后的部分使用这个操作符:
let [x, ...y] = ['a', 'b', 'c']; // x='a'; y=['b', 'c']
剩余操作符提取数据,数组字面量和函数调用都可以使用相同的扩展操作符语法(...),下一章会讲解这种用法。
如果该操作符没找到任何元素,将会使操作数匹配上一个空数组。也就是说,剩余操作符从不产生 undefined
或者 null
。例如:
let [x, y, ...z] = ['a']; // x='a'; y=undefined; z=[]
剩余操作符的操作数不一定是一个变量,也可以是模式:
let [x, ...[y, z]] = ['a', 'b', 'c'];
// x = 'a'; y = 'b'; z = 'c'
剩余操作符触发了如下解构过程:
[y, z] = ['b', 'c']
扩展操作符(...)看起来和剩余操作符一模一样,但是它用于函数调用和数组字面量(不是在解构模式里面)。