标签: 剩余参数运算符

  • 剩余参数运算符、展开运算符

    …剩余参数运算符

    为了接收所有参数

    普通函数可以通过arguments获取全部参数,箭头函数没有arguments

    用于函数形参,必须放在形参最后一个!

    • 一般配合箭头函数, 因为箭头函数内不能用arguments
    • 必须出现在形参的最后面
    function youSum (a, ...args) {
      console.log(a, args)
    }
    youSum(5, 10) //5 [10]
    youSum(5, 100, 200, 300) //5 [100,200,300]
    youSum(5, 100, 200, 300, 400) //5 [100,200,300,400]
    
    let mySum = (...args) => {
      console.log(args)
    }
    mySum(10, 20, 30, 40) //[10, 20, 30, 40]
    

    …展开运算符

    用于数组[]或对象{}中, 可以将数组的项或对象的键值对展开

    展开数组

    let arr = [1, 3, 5, 7]
    console.log(...arr) // 打印数组的每一项 1,3,5,7
    拼接两个数组
    let arr1 = [1, 2, 3]
    let arr2 = [4, 5, 6]
    let newArr = [...arr1, ...arr2]
    求数组最大值
    let arr = [3, 100, 20]
    let max = Math.max(...arr3)

    展开对象

    let obj1 = {
      name: 'Liao',
      age: 18,
    }
    let obj2 = {
      money: 10000000000,
      car: "没有"
    }
    // 相当于快速浅拷贝
    let obj3 = {
      ...obj1,
      ...obj2,
      name: 'liao'
    }
    //obj3 === {name: 'Liao',age: 18,money: 10000000000,car: "没有",name: 'liao'}
    //obj3的name属性放到...obj2前面,name属性则会被覆盖