js arguments关键字和callee

时间:2022-07-18 17:05:04

1、arguments获取函数参数,arguments为一个数组


  function getParmes(a,b){
alert(arguments.length);//arguments函数的参数构成的数组,有lenth属性
if(arguments.length==1){
alert(arguments[0]);
}else if(arguments.length==2){
alert(arguments[0]+"  "+arguments[1]);
}

}

调用:

getParmes("a");


2、callee 


//求阶乘的方法
function jiecheng(n){
if(n==1){
return 1;
}

return n*jiecheng(n-1);  //需要在函数内部调用自己
}


return n*jiecheng(n-1);  可以替换为:return n*arguments.callee(n-1);

替换的好处:可以降低代码耦合度


var jc=jiecheng;  //对象的引用传递(函数也是对象)

alert(jc(4));  //方法可以正常运行

如果改为如下:

var jc=jiecheng;  //对象的引用传递(函数也是对象)

jiecheng=null;

alert(jc(4));  //不能正常运行,jiecheng方法被销毁,会报错,此时,修改return n*jiecheng(n-1); ===》return n*jc(n-1);则可以正常运行 。这样提高了代码的耦合度