<!DOCTYPE html>
<html>
<head>
<title>javascript中arguments用法</title>
<script type="text/javascript">
function say(num){
/**
* 在函数中有一个arguments的属性这个属性,通过这个属性可以获取相应的参数值
* 这个属性是一个数组,其实就是传递进来的参数
*/
alert(arguments.length);
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);
}
}
//say(1,2,3);
//------------------------------
/**
* 在arguments这个对象中有一个callee的方法
* arguments.callee(arg);可以反向调用函数
*/
function fac(num){
if(num <=1){
return 1;
}else{
//以下是解耦合
//return num * fac(num-1);
return num*arguments.callee(num-1);
}
}
//以上就是一个求阶乘的方法,以上递归调用的函数名称和原来的函数耦合在一起
//如果将这个函数的名称更改之后,递归调用就会失效。
var cf = fac;
//alert(fac(5));
//此时不会报错
alert(cf(5));
fac = null;
alert(cf(5));
</script>
</head>
<body>
</body>
</html>
原文:http://www.cnblogs.com/aicpcode/p/4279459.html