函数参数

80 阅读1分钟

arguments

  1. arguments是一个类数组对象(伪数组)。
    • 和数组相似,可以通过索引来读取元素,也可以通过for循环变量,但是他不是一个数组对象,不能用来调用数组方法。
  2. arguments用来存储函数的实参。
    • 无论用户是否定义形参,是实参会存储到arguments对象中,可以通过该对象直接访问实参。
function fn() {

    console.log(arguments)
    console.log(arguments.length) // 3
    console.log(arguments[2]) // 39
    
    for (let i = 0; i < arguments.length; i++){
        console.log(arguments[i])
    }
    
    for(let v of arguments){
        console.log(v)
    }
      
    arguments.forEach(ele => console.log(ele)) // Uncaught TypeError
}

fn(1,10,39)
  1. arguments作用。
// 能通过arguments求任意数值的和,不被参数数量限制更加灵活创建函数
function sum() {
    let result = 0;
    
    for(let num of arguments){
        result += num;
    }
    
    return result;
}

/*
    sum(1) // 1
    sum(1,2) // 3
    sum(1,2,3) // 6
*/

可变参数

  1. 可变参数可以接受任意数量实参,并将他们统一存储到一个数组中返回
  2. 可变参数的作用和arguments基本一致,但也具有不同点:
    • 可变参数的名字可以自己指定
    • 可变参数就是一个数组,可以直接使用数组的方法
    • 可变参数可以配合其他参数一起使用(需要将可变参数,写到最后)
function sum2(...num) {
    return num.reduce((a+b) => a+b,0)
}

function fn3(a,b,..args) {
    
    }
}

fn3(1,2,'hello',99,true)