函参,顾名思义,就是函数的参数,一般我们的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)...