扩展运算符
说明:本文参考阮一峰的ECMAScript 6 入门
扩展运算符表示形式是三个点(…)。就好比rest参数的逆运算,将一个数组转化为用逗号分隔的参数序列。
console.log(...[1, 2, 3])
//1 2 3
console.log(1, ...[2, 3, 4])
//1 2 3 4
该运算符主要用于函数调用。
function push(array, ...items) {
array.push(...items)
}
function add(x, y) {
return x + y
}
const nums = [2, 3]
add(...nums) //5
上面代码中,array.push(…items)和add(…numbers)这两行,都是函数的调用,它们的都使用了扩展运算符。该运算符将一个数组,变为参数序列。
替代函数的apply方法
由于扩展运算符可以展开数组,所以不再需要apply方法,将数组转为函数的参数了。
// ES5 的写法
function f(x, y, z) {
// ...
}
var args = [0, 1, 2];
f.apply(null, args);
// ES6的写法
function f(x, y, z) {
// ...
}
let args = [0, 1, 2];
f(...args);
下面是扩展运算符取代apply方法的一个实际的例子,应用Math.max方法,简化求出一个数组最大元素的写法。
// ES5 的写法
Math.max.apply(null, [14, 3, 77])
// ES6 的写法
Math.max(...[14, 3, 77])
// 等同于
Math.max(14, 3, 77);
上面代码中,由于 JavaScript 不提供求数组最大元素的函数,所以只能套用Math.max函数,将数组转为一个参数序列,然后求最大值。有了扩展运算符以后,就可以直接用Math.max了。