不固定参数求和,arguments

不固定参数求和,arguments

啥也不说了,先上代码:

function add(){
            var sum =0;
            for(var i=0;i<arguments.length;i++){
                sum += arguments[i];
            }
            alert(sum);
        }
        add(1,2,3,5,6);

咳咳,结果是显而易见的:17
下面说一下arguments对象。
1.在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。
例子:

Array.prototype.testArg = "test";
        function funcArg() {
            alert(arguments.testArg);  
            alert(arguments[0]);
        }

        alert(new Array().testArg); // result: "test"
        funcArg(10);  // result: "undefined"  "10"

也就是说arguments对象的长度是由实参个数而不是形参个数决定的。
2.另外,大家都知道,javascript中,函数是不可以重载的,用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}

doAdd(10);  //输出 "15"
doAdd(40, 20);  //输出 "60"

```;
3.arguments还有个很好用的属性:callee,可用于递归:
下面这个例子是个阶乘:





<div class="se-preview-section-delimiter"></div>

这里写代码片
“`

function count(a){
            var result =0;
            if (a ==1){
                result = 1;

            }else{
                result = a*count(a-1);
            }
            return result;

        }
        // count(4);
        console.log(count(4));//result:24

因此在使用递归的时候,可以考虑使用arguments.callee。

参考:
http://www.cnblogs.com/lwbqqyumidi/archive/2012/12/03/2799833.html
http://www.w3school.com.cn/js/pro_js_functions_arguments_object.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值