欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端提高篇(十一)JS进阶8函数参数及arguments

程序员文章站 2024-01-04 21:32:28
...

形参与实参

基础点可以看这篇文章

获取形参个数:函数名.length

        function add(a,b,c,d,e){
            console.log('形参个数:' + add.length);
        }

运行效果:
前端提高篇(十一)JS进阶8函数参数及arguments

arguments

特点

  • 仅函数中有
  • 专为函数参数设置的对象
  • 伪数组,仅能用数组中的length和[下标]
  • callee参数,指向函数自己
  1. arguments.length获取实参个数
  2. arguments[0]获取第一个形参
  3. arguments.callee.length可以获取形参个数,用在匿名函数
  4. arguments.callee也可以用在匿名函数的递归调用上

arguments.callee.length:

当不是匿名函数时

        function add(a,b,c,d,e){
            console.log('实参个数: '+ arguments.length + ' 第一个实参: ' + arguments[0]);
            console.log('形参个数:' + add.length + ' 第一个形参:'+a + ' 第二个形参:'+b);
        }
        add(1,2,3);

运行效果:
前端提高篇(十一)JS进阶8函数参数及arguments

当函数是匿名函数时

当函数是匿名函数时,不能通过函数名.length获取形参个数,这时就需要通过arguments和callee来获取,callee指向函数自身

        var x = function(a,b,c,d,e,f){
            console.log('实参个数: '+ arguments.length + ' 第一个实参: ' + arguments[0]);
            console.log('形参个数:' + arguments.callee.length + ' 第一个形参:'+a + ' 第二个形参:'+b);
        }
        add(1,2,3);

运行效果:
前端提高篇(十一)JS进阶8函数参数及arguments

arguments.callee用于匿名函数递归(自调用):

不是匿名函数时:

        function add(a,b,c,d,e,f){
            console.log('实参个数: '+ arguments.length + ' 第一个实参: ' + arguments[0]);
            console.log('形参个数:' + arguments.callee.length + ' 第一个形参:'+a + ' 第二个形参:'+b);
            if (a == 1){
                return add(5,6);
            }else{
                return a+b;
            }
        }
        console.log(add(1,2));

运行效果:
前端提高篇(十一)JS进阶8函数参数及arguments

是匿名函数时:

        var x = function(a,b,c,d,e,f){
            console.log('实参个数: '+ arguments.length + ' 第一个实参: ' + arguments[0]);
            console.log('形参个数:' + arguments.callee.length + ' 第一个形参:'+a + ' 第二个形参:'+b);
            if (a == 1){
                return arguments.callee(5,6);
            }else{
                return a+b;
            }
        }
        console.log(x(1,2));

运行不报错,效果一致

实现任意参数求和

        function add(){
            var res = 0;
            for (var i = 0;i < arguments.length; i++){
                res += arguments[i];
            }
            return res;
        }
        console.log(add(1,2,3,4,5));
        console.log(add(1,2));
        console.log(add());

运行效果:
前端提高篇(十一)JS进阶8函数参数及arguments

上一篇:

下一篇: