关于arguments的用法

当函数的参数个数无法确定的时候:用 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这个属性调用自身。

好了,大概就是这样了,若是有问题,欢迎指出!

posted @ 2017-12-16 20:31  麦兜家园  阅读(735)  评论(0编辑  收藏  举报