<!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