在学习的过程中写这篇文章,总结一些学习arguments的一些用法
这个用法是基础的用法
function test() { var w = ""; for (var i = 0; i < arguments.length; i++) { alert(arguments[i]); w += arguments[i] + ","; } return w; } test("name", "age"); 输出结果:name,age输出结果:name,age
这个例子用了argumens.length的实参参数长度和指代实参参数的功能
arguments.callee的作用:找到自身的引用。
接下里我会用阶乘的方法来说明 <1>普通方法计算阶乘,有函数名称,利用函数名称找到自身的引用
function fn(n){ if (n==1){ return 1; } return n * fn(n-1); } var a = fn(10); console.log(a);这里因为有了函数名fn所以直接可以引用。
<2>进阶方法:利用arguments.callee,不写函数名称找到自身的引用
var num= (function (n){ if(n==1){ return 1; } return n * arguments.callee(n-1); }(20))这里利用立即执行函数和arguments.callee。
argumnets.callee直接引用了这个函数,解决了无函数名称的引用问题
总结: 1.arguments.length为函数实参个数,arguments.callee引用函数自身。
2.无论是arguments.length还是arguments.callee都是解决‘替代’的问题