森威
2016-07-05 09:22
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var sourceArr=scoreStr.split(";");
var sum = 0;
for(var i=0;i<sourceArr.length;i ++)
{sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(":")+1))}
document.write(sum);
上述代码,会显示总成绩815,但是在for(var i=0;i<=sourceArr.length;i ++)中多加了一个“=”后,总成绩就看不到了,不应该是少算一个成绩吗,怎么会无法显示?
不是少算一个成绩,而是多了一个,但是获取不到值,所以空白。如果你想少算最后一个成绩的话,可以这样写
for(var i=0;i<sourceArr.length-1;i ++);
数组下标从0开始,使用循环的话,i的值是要小于数组长度sourceArr.length的,加个=就越界了
楼上正解,加“=”不是少算了一个成绩,是多算了一个,数组是从0开始 ,到sourceArr[sourceArr.length-1],你数组越界了。
多加=号数组会越界,数组越界是一个错误,注意这里是错误,在其他语言中(java OC)会造成程序的崩溃。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题