为什么JavaScript函数generateQuestionIndex返回undefined?
函数返回undefined的原因及修复
你的generateQuestionIndex函数会返回undefined,核心问题出在递归分支的处理上:
- 当随机生成的
index < 7时,你调用了递归函数generateQuestionIndex(),但没有把这个递归调用的结果返回出去。这时候这个分支执行完后没有任何return语句,函数就会默认返回undefined。 - 只有当
index == 7时,函数才会执行return index + 1,返回有效的数值。
修复后的代码
function generateQuestionIndex() { var index = Math.floor(Math.random() * 8); if (index < 7) { // 必须把递归调用的结果return,才能让上层函数拿到最终返回值 return generateQuestionIndex(); } else if (index == 7) { alert('return' + index); return index + 1; } } document.getElementById("demo").innerHTML = generateQuestionIndex();
修改后,每次递归都会把最终的返回值逐层传递回去,不管递归多少次,最终函数都会返回index ==7时的index+1,不会再出现undefined的情况。
内容的提问来源于stack exchange,提问作者tracey02
相关产品推荐
相关产品推荐

