ES6语法:三个点参数

rest参数

ES6 引入 rest 参数(形式为“…变量名”)

  • rest参数中的变量代表一个数组
  • 函数的length属性,不包括rest参数
  • rest参数后不能再有其他参数,否则报错
1
2
3
4
// 报错
function f(a, ...b, c) {
// ...
}

与箭头函数结合

1
2
3
4
const numbers = (...nums) => nums;

numbers(1, 2, 3, 4, 5)
// [1,2,3,4,5]

扩展运算符

1
2
3
4
// ES6的写法
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(...arr2); //arr1=[0,1,2,3,4,5]

扩展运算符也可以与解构赋值结合起来,用于生成数组。
但是只能放在参数的最后一位

1
2
3
const [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest // [2, 3, 4, 5]

扩展运算符内部调用的是数据结构的 Iterator 接口,因此只要具有 Iterator 接口的对象,都可以使用扩展运算符

1
2
3
4
5
6
7
let map = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);

let arr = [...map.keys()]; // [1, 2, 3]