ES6展开运算符的作用

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变量中

猜你喜欢

转载自blog.csdn.net/m0_44973790/article/details/116033089
今日推荐