美文网首页js css html
默认参数arguments和可变参数

默认参数arguments和可变参数

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-03-23 16:30 被阅读0次

    一、arguments 对象

    1.1、特点

    • arguments是函数中又一个隐含参数(另一个是this)
    • arguments用来存储函数的实参
    • 无论用户是否定义形参,实参都会存储到arguments对象中
    • 可以通过该对象直接访问实参
     <script>
        function fn () {
          console.log(arguments);
        }
        fn(1, 2, 3)
      </script>
    

    打印结果

    image.png
    • arguments是一个类数组对象 (伪数组)和数组相似,
    • 可以通过索引来读取元素,也可以通过for循环变量
     <script>
        function fn () {
          for (let item of arguments) {
            console.log(item);
          }
        }
        fn(1, 2, 3)
      </script>
    

    打印结果

    image.png
    • 但是它不是一个数组对象,不能调用forEach、map、reduce等高阶函数循环它
     <script>
        function fn () {
          arguments.forEach(element => {
            console.log(element); 
          });
        }
        fn(1, 2, 3)
      </script>
    

    报错

    image.png

    1.2、常用

    求所有参数和

    <script>
        function fn () {
          let result = 0;
          for (let item of arguments) {
            result += item;
          }
          console.log(result); //6
        }
        fn(1, 2, 3)
      </script>
    

    二、可变参数

    • 可变参数,在定义函数时可以将参数指定为可变参数
    • 可变参数可以接收任意数量实参,并将他们统一存储到一个数组中返回
    • 可变参数的作用和arguments基本是一致,但是也具有一些不同点:
       可变参数的名字可以自己指定
       可变参数就是一个真实数组
    

    在函数中使用...xxx可以定义一个可变参数

    <script>
        function fn (...arg) {
          let result = arg.reduce((pre, cur) => pre + cur, 0);
          console.log(result); //6
        }
        fn(1, 2, 3)
      </script>
    
    
    • 可变参数可以配合其他参数一起使用
      <script>
        function fn (a, b, ...arg) {
          console.log(a, b, arg);
        }
        fn(1, 2, 3, 4, 5)
      </script>
    

    打印结果

    image.png

    相关文章

      网友评论

        本文标题:默认参数arguments和可变参数

        本文链接:https://www.haomeiwen.com/subject/rweirdtx.html