递归函数运行异常:调用countDown(5)返回undefined而非打印5-1
问题分析与修正
你的代码有三个关键问题导致不符合预期:
- 完全没有打印逻辑:整个函数里没有任何
console.log()语句,自然不会输出从5到1的数字。 - 递归执行顺序颠倒:你现在是先递归调用
countDown(count-1),再处理当前的count——就算后面加了打印,也会先输出1再输出5,顺序完全反了。 - 函数无有效返回值:只有当
count==0时函数会return,其他分支都没有返回任何值,所以调用countDown(5)的结果必然是undefined,用console.log输出这个结果当然只会显示undefined。
修正后的代码
function countDown(count){ if(count === 0){ return; } // 先打印当前数值,再递归调用下一个数 console.log(count); countDown(count - 1); } // 直接调用函数即可,不需要用console.log包裹,因为函数内部已经完成打印 countDown(5);
这样执行后,就会在控制台依次输出5、4、3、2、1,也不会再出现undefined的输出。
内容的提问来源于stack exchange,提问作者Diana
相关产品推荐
相关产品推荐

