js中的函参(arguments)

函参,顾名思义,就是函数的参数,一般我们的js函数这么写:

function sum(a,b){
    console.log(a+b);
}

不难看出,这实现了两个数的相加,比如sum(1,2),打印结果 3,

1.不定形参的函数

那么要实现不定参数的相加怎么办呢,那就用到了arguments对象,arguments对象代表实参的数组集合,

(上面的a,b是形参,而1,2则是实参)

function add(){
     var len = arguments.length;
     var sum = 0;
     for(var i=0;i<len;i++){
           sum += arguments[i];
     }
     console.log(sum);
}

上面的函数虽然没有指定形参,但是函数内部的arguments是获取到了执行该函数时的实参的,

add(1,2)                 //3
add(1,2,3)               //6
add(1,2,3,4)             //10

2.arguments.callee

这个方法(姑且这么叫吧)调用函数本身,有点递归的意思,只能在函数体内调用

var sum = function (n) {
        if (1 == n) {
            return 1;
        } else {
            return n + arguments.callee(n - 1);
        }
    }
    alert(sum(6));

注意,要设定一个n==1时的判断,不然就走死循环了,继续执行sum(1)、sum(0)、sum(-1)...

原文地址:https://www.cnblogs.com/eco-just/p/9098248.html