javascript函数的参数:形参,实参
//function 参数 //形参列表 function test(a,b,c,d){ //alert(test.length); //形参个数,4个 //函数的实际参数,内部就是用一个数组去接收函数的实际参数 //arguments 对象,可以访问函数的实际参数
//arguments 对象只能在函数的内部使用
alert(arguments.length); //2个 alert(arguments[0]); //10 alert(arguments[1]); //20 return a+b; } alert(test(10,20)); //30,函数的形参和实际参数不一致不会报错。
但是这样写程序不严谨,我们希望的是只有形参和实参个数一致 的时候才去执行函数,否则抛出异常或者给一个提示
所以加上判断:
if(test.length == arguments.length){ return a+b; }else{ return '参数不正确!'; }
还有问题,test.length虽然能够取到形参的个数,但是一般不这么用,会有潜在性的问题。一般用arguments.callee例子:
//递归 function fact(num){ if(num<=1) return 1; else return num*fact(num-1); } var F = fact ; //你把fact 赋值给了变量 F,相当于复制了一份 fact = null; //假设有其他人把 fact 弄成了null, alert(F(5)); //报错
但是用arguments.callee来代替fact这样写就不会报错了:
//递归 function fact(num){ if(num<=1) return 1; else return num*arguments.callee(num-1); //使用arguments.callee,指向函数本身 } var F = fact ; //你把fact 赋值给了变量 F,相当于复制了一份 fact = null; //假设有其他人把 fact 弄成了null alert(F(5));
所以上边的用取形参也不用test.length,也使用arguments.callee.length:
if(arguments.callee.length == arguments.length){ return a+b; }else{ return '参数不正确!'; }
总结:
欢迎关注个人公众号一起交流学习: