... 操作符除了用来收集剩余数据这种 rest 用法,它还有一个 spread (展开) 用法。 这种展开用法的用途有很多,这里先来了解与函数相关的数组参数展开。
const arr = ['foo', 'bar', 'baz'];
// 将数组中的成员按照次序传递给 console.log 方法
// 最原始的方式,通过下标一个个去找到数组中的元素分别传递
console.log(arr[0], arr[1], arr[2])
// 如果说数组中的元素个数是不固定的,一个个传的方式就行不通了
// 以前处理如此参数不固定的方法就是使用函数对象的 apply 方法去调用函数
// 这个方法可以使用以数组的形式去接收我们的实参列表
// apply 方法的第一个参数是 this 的指向, 第二个参数就是实参列表
console.log.apply(console, arr)
// ES2015 当中就没必要这么麻烦了,
// 这里展开操作符就会自动把数组当中的每一个成员按照次序传递到参数列表当中
// 这样就大大简化了操作
console.log(...arr)