function fn1(){
alert(arguments);
alert(arguments.length)
}
fn1(1,2,3)
arguments适用场合:当函数的参数个数无法确定的时候
function sum(){
var result = 0;
for(var i=0;i<arguments.length;i++){
result += arguments[i];
}
return result;
}
console.log(sum(1,2,3,4,5,386))
利用arguments.length查看实参和形参的个数是否一致
function checkAdd(a, b) {
var realLen = arguments.length;
console.log("realLen:", arguments.length);
var len = checkAdd.length;
console.log("len:", checkAdd.length);
if (realLen == len) {
console.log('实参和形参个数一致');
} else {
console.log('实参和形参个数不一致');
}
};
checkAdd(1,2,3,6,8);
arguments.callee 引用函数自身
借用arguments.callee来让匿名函数实现递归
var sum3 = function(n) {
if(n == 1) {
return 1;
}else {
return n + arguments.callee(n-1);
}
}
console.log("sum =", sum3(5));
arguments和局部变量的关系:可以读可以改
var a = 1;
function fn2(a){
arguments[0] = 3;
alert(a);
var a = 2;
alert(arguments[0]);
}
fn2(a);
alert(a);
arguments模拟函数重载
用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:
function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 5);
} else if(arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}
doAdd(10);
doAdd(40, 20);