猿问

var sum=0是什么意思?

function box(){

var sum=0;     

for(var i=0;i<arguments.length;i++){

sum=arguments[i]+sum;

}

return sum;

}

alert(box(1,2,3,4,5,6,8));

这段代码,我将var sum =1   得出的结果是30     ;var sum=2  得出的结果是31  谁能解释下。貌似sum没有循环加上去



崔婉妮
浏览 4361回答 6
6回答

JustWannaHugU

第一次循环sum1=arguments[i]+sum0第二次循环sum2=arguments[i]+sum1第三次循环sum3=arguments[i]+sum2可见,改变初始值sum0并不会对总循环造成太大的影响,因为sum0不会重复增加因此你初始值增加了多少,总值就会改变多少

menghuanbaolei

初始化对象;

NadiaSmile

 我想你纠结的是不是sum起始值+1 那循环N次 总值应该+N?这样说,var sum=0;for(var i = 0;i<5;i++){sum=sum+1;}  运行了结果sum=5,因为sum加了5次1而已。 sum=1,那结果就是6,sum=10,结果是15;把加的1换成2,3,4,5结果一样   由此可见,sum的起始值加多少。最终结果加多少,跟循环是不相关的。望采纳~~~

摩诃迦叶

什么叫没有循环加上去? 这段代码一点问题都没有啊。 求1+2+3+4+5+6+8+0的和不就是29么?1+2+3+4+5+6+8+1不就是30么? 1+2+3+4+5+6+8+2不就是31么。。。。

this_life

结果没问题啊,box函数是将参数的所有值计算和返回。alert(box(1,2,3,4,5,6,8));的参数值和为29。你将sum的初始值调整为1,那么结果=29+1=30 ,改为2结果=29+2=31.没有问题

stone310

因为这里sum不断自加,但加得并不是最初声明的sumi=0,sum=0(最初的sum)+arguments[0](即1),i++;(sum=1)i=1,sum=1(第一次循环后的sum)+arguments[1](即2),i++;(sum=3)i=2,sum=3(第二次循环后的sum)+arguments[2](即3),i++;(sum=6)可以看到其实这里sum=arguments[i]+sum中的sum在第一次循环的时候就已经改变了,所以最初的var sum只是相加了一次,并不会循环到公式里去;所以这里就是参数相加,然后再加上最初的sum的值
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答