<script language="javascript">
<!--
  function sumall(){
    var argslength=sumall.arguments.length;
    var sum=0;
    for(var i=0;i<argslength;i++)
     sum+=sumall.argumments[i];
    }
    document.write("sum is "+sum+"<br>");
  }
sumall(1,2,3);
sumall(2,800);
-->
</scrit>得出的结果是:
sum is 6
sum is 802主要问题来了`
当我想输出时显示如下:
sum is 6
this is 802
该怎么修改语句的呢?
基础还未过关~
这么简单都不会`
所以还要学习的`

解决方案 »

  1.   


    <html>
    </head>
    <body>
    <script language="javascript"> 
    <!--
    function sumall(){
    var argslength = sumall.arguments.length-1;
    var sum = 0;
    for(var i=0;i<argslength;i++) sum += sumall.arguments[i];
    document.write(sumall.arguments[argslength] + sum + "<br>");
    }
    sumall(1,2,3,"sum is ");
    sumall(2,800,"this is ");
    --> 
    </script></body>
    </html>
      

  2.   

    感谢啦~`
    想不到这么快就有人回复正确答案了``可是`
    有些地方理解不到的~`
    如:var argslength = sumall.arguments.length-1;
    //定义一个变量,并将函数的个数赋值给变量,可是,为什么要arguments.length是个减1的呢?个数减去1有什么作用?
    当我改为如:var argslength = sumall.arguments.length+3时,
    结果:
    undefined6sum is undefinedundefinedundefined
    undefined802this is undefinedundefinedundefined
    当在长度后加一个数目时,就出现一个未知数的,不加数目时,就不出现undefined;还有在undefined6在那里决定此数在前面出现的?
    当我改为如:var argslength = sumall.arguments.length-2
    结果;
    6
    802
    代码是怎么计算的啊?
    还有代码:
    sumall(1,2,3,"sum is ");
    sumall(2,800,"this is ");
    这里又想不明的`
    为什么值放置在前面,而字符串在后面的呢?
    它们是为那里准备的哦?
    我修改为:
    sumall("sum is ",1,2,3);
    sumall("this is ",2,800);
    结果出错,得到:
    30sum is 12
    8000this is 2
    怎么会这样的啊?>
    最后要精通它们之前的属性或者方法`
    要加强学习那里的呢?
      

  3.   

    放在前面的话
    function sumall(){
        var argslength = sumall.arguments.length-1;
        var sum = 0;
        for(var i=1;i<=argslength;i++) sum += sumall.arguments[i];
        document.write(sumall.arguments[0] + sum + "<br>");
    }
    sumall("sum is ",1,2,3); 
    sumall("this is ",2,800); 比较一下代码就清楚了
      

  4.   

    喔~
    这个比较明了的喔`一楼的代码终于看明白了`
    写下理解过程啦``
    原码;
    function sumall(){
        var argslength = sumall.arguments.length-1;
        var sum = 0;
        for(var i=0;i<argslength;i++) sum += sumall.arguments[i];
        document.write(sumall.arguments[argslength] + sum + "<br>");
    }
    sumall(1,2,3,"sum is ");
    sumall(2,800,"this is ");理解过程:
    var argslength=sumall.arguments.length-1;//即是长度减去1,得到长度为3;
    for(var i=0;i<3;i++)
    sum=sum+sumall.arguments[i]
    i=0时,sum=sum+sumall.arguments[0]
             =0+1
             =1
    i=1时,sum=sum+sumall.arguments[1]
             =1+2
             =3
    i=2时,sum=sum+sumall.arguments[2]
             =3+3
             =6
    至此,sum=6最后输出语句了
    原码:
    document.write(sumall.arguments[argslength] + sum + "<br>");
    理解过程:
    document.write(sumall.arguments[3]+sum+"<br>");
    即是sumall.arguments[3]赋值于sum is,
    所以document.write("sum is"+6)
    得到的结果就是sum is 6希望我的理解能帮助到几个人啦``
    嘻嘻~~
      

  5.   

    sumall(4,1,2,3); 
    sumall("字符串",2,800); 
    输出的是:
    10
    字符串802
    难道说,减一只是减去字符串的吗?数字并不会减啊?sumall(1,2,3,9);
    sumall(2,800,"字符串");
    输出的是;
    15
    字符串802
    再说说明,当函数中不有字符串时,其值全部是相加的?含有字符串时,并不是全部相加的?这个结论对吗?