1.不使用Apply的函数调用
我们经常使用Function.prototype.apply,传递一个数组作为参数,使用数组中存放的一组参数调用一个函数
function doStuff(x,y,z){}
var args = [0,1,2]
//调用函数,传递args参数
doStuff.apply(null,args)
采用展开运算符,我们能够避开使用apply的同时,轻易的调用函数,只需在数组钱加上展开运算符即可
doStuff(...args)
2.合并数组
arr.push(...arr2)//将arr2数组追加到数组arr的末尾
arr.unshift(...arr2)//将arr2追加到数组arr的开头
//整合两个数组,并且把某个数组放在另一个数组的任意特定位置上
var arr1 = [a,b]
var arr2 = [d,...arr1,e,f]
console.log(arr2) //[d,a,b,e,f]
3.拷贝数组
过去是通过Array.prototype.slice来进行拷贝
//通过展开运算符进行拷贝
var arr = [1,2,3]
var arr2 = [...arr] //arr.slice()类似
arr2.push(4)
注意:数组的对象依然是引用值,所以不是任何东西都拷贝过去了
4.将arguments或者NodeList转换为Array
之前Array.prototype.slicel来将NodeList和arguments这种类数组对象转换为真正的数组
通过展开运算符可以轻松实现
[...document.querySelectorAll('div')]
甚至可以像数组一样获取参数
var myFun = function(...args){
//...
}
//也可以用Array.from达成相同的目的
5.使用Math函数
任何可接收任意数量的参数的函数,都可以使用展开运算符进行传参
let numbers = [2,3,5,1]
Math.min(...numbers) // 1
6.进行解构
let {x,y,...z} = {x:1,y:2,a:3,b:4}
console,log(x); //1
console.log(y); //2
console.log(z); //{a:3,b:4}
//将剩余的属性分配到展开运算符之后的z变量中