函数参数

默认参数

ES6提供了更方便的写默认参数方式

function getSum(a=10, b=2) {
    return a+b
}

getSum() //12
getSum(1, 3) //4
getSum(1) //3
getSum(undefined, 10) //20  当要省略不是最后的参数时 需要使用也只能使用undefined

剩余参数

用于当参数不止一个时,方便我们一次获取多个参数

function sum(...args) {
    return args.reduce((prev, current) => prev+current, 0)
}
sum(1,2,3,4) //10

const numbers = [11, 32, 24, 12]
//数组需要扩展运算符
sum(...numbers) //79

function userScoreSum(name, ...score) {
    const sum = score.reduce((pre, curr) => pre+curr, 0)
    console.log(`${name}得分为${sum}`)
}
userScoreSum("lyy", 100, 99, 99) //lyy得分为298

扩展运算符

将可迭代(遍历)对象每个元素扩展为一个参数序列

const numbersArr1 = [1, 3, 6]
const numbersArr2 = [2, 4, 6]

//[1, 3, 6, 2, 4 ,6]
const totalNums = numbersArr1.concat(numbersArr2) 

//[1, 3, 6, 55, 2, 4 ,6]
const totalNums2 = [...numbersArr1, 55,...numbersArr2]

扩展运算符 运用

  1. 获取数组副本

    我们经常使用其来实现获取可遍历对象的副本,而避免其引用

    //避免使用引用类型 而操作num3时 影响num2数组
    const totalNums3 = [...totalNums2]
    
  2. 替代Array.from() 获取每个字符 将可遍历或者类数组对象变为数组对象

    const lis = [...document.querySelectorAll("li")]
    
  3. 扩展数组元素拼接

  4. 将数组元素扩展为函数参数

    const numbersArr1 = [1, 3, 6]
    const numbersArr2 = [2, 4, 6]
    numbersArr1.push(numbersArr2)
    console.log(numbersArr1) //[1, 3, 6, [2, 4, 6]]]
    numbersArr1.push(...numbersArr2) //[1, 3, 6, 2, 4, 6]