当函数的参数个数无法确定的时候:用 arguments。函数的 arguments 对象并不是一个数组,它相当于是一个实参的集合,但是访问单个参数的方式与访问数组元素的方式相同。访问
函数中的第n个参数 则可以使用arguments[n-1]。
1、arguments实际为实参的集合。既然是集合,那么一定有长度length;
arguments.length为函数实参的个数,要注意的是,arguments对象并不是一数组,它也不具有数据的所有方法,但是访问单个参数的方式与访问数组元素的方式相同。比如:
alert(sum( 1,2,3,4 )) //返回的结果就是10 function sum (){ var n = 0; for( var i=0; i<arguments.length; i++ ){ n += arguments[i]; } return n; }
2、属性callee
对象都是有自己的属性和方法的,Arguments对象也是一样,callee就是它的方法,这个方法用的不多,很容易被我们忽略,它指向的是正在被执行的Function对象,
最常用的例子就是用来做递归了。比如:
function sum(n){ if(n==1){ return 1; }else{ return n+arguments.callee(n-1) } } console.log(sum(100)) //打印的结果就是5050
这个打印出来,就相当于实现了从1加到100的结果,实际上就是一个简单的计算器。
其实,关于arguments简单总结一下就是:
1、arguments像数组,是一个实参集合。
2、arguments有length属性,代表传给函数的参数个数。
3、可以数组下标访问参数,如arguments[0],但是没有数组其它方法。
4、可以使用callee这个属性调用自身。
好了,大概就是这样了,若是有问题,欢迎指出!