JavaScript编写学生成绩计算程序输出undefined问题求助
问题原因
- 未执行成绩计算逻辑:你定义了
accumulatedGrades()函数用于统计成绩总和,但代码运行全程没有调用过该函数,全局变量sum始终保持初始值0,直接计算平均值无法得到正确结果。 document.write()用法错误:document.write()的作用是直接向当前文档流写入内容,本身没有返回值,将它的执行结果赋值给元素的innerHTML属性,拿到的就是undefined。如果是在页面DOM加载完成后调用document.write,还会清空整个已加载的页面内容,导致页面无任何内容显示。- 隐性问题:循环中的
index变量没有用var/let/const声明,会隐式注册为全局变量,容易造成变量污染。
修复方案
调整后的JS代码如下:
var grades = [80, 87, 94, 82, 62, 98, 81, 81, 74, 91]; var sum = 0; function accumulatedGrades(){ sum = 0; // 每次调用前重置总和,避免重复调用时数值累加出错 for (let index = 0; index < grades.length; index++){ sum += grades[index]; } return sum / grades.length; } function tests(){ // 先调用计算函数获取平均分,直接赋值给目标元素即可 const averageScore = accumulatedGrades(); document.getElementById('average').innerHTML = averageScore; }
HTML代码无需修改,原有逻辑即可正常运行。
内容的提问来源于stack exchange,提问作者Darlisa Cardiff
相关产品推荐
相关产品推荐

