JavaScript中for循环调用函数输出出现undefined的问题求助
掷骰子程序输出undefined的原因及解决方法
问题根源
你的代码存在重复输出逻辑,导致出现undefined:
rollDie函数里,return console.log(roll)这行先执行console.log(roll)打印骰子点数,但console.log()本身的返回值是undefined,所以函数最终返回undefined。- 循环中的
console.log(rollDie())会先调用rollDie()(此时已经打印了点数),接着又把函数返回的undefined打印出来,于是就出现了点数后跟着undefined的情况。
修正方案
两种简单的修正方式,任选其一即可:
方案一:函数生成点数,循环负责打印
function rollDie () { const roll = Math.floor(Math.random() * 6) + 1; return roll; }; let num = 4; for (let i=1; i <= num; i++) { console.log(rollDie()); };
这里函数仅负责生成并返回骰子点数,循环调用函数后打印返回值,只会输出点数,不会出现undefined。
方案二:函数内部打印点数,循环直接调用
function rollDie () { const roll = Math.floor(Math.random() * 6) + 1; console.log(roll); }; let num = 4; for (let i=1; i <= num; i++) { rollDie(); };
这种方式下,函数内部已完成打印操作,循环只需调用函数,无需额外用console.log包裹,自然不会输出undefined。
另外提醒:变量roll最好用const或let声明,避免变成全局变量引发其他问题。
内容的提问来源于stack exchange,提问作者Brice N
相关产品推荐
相关产品推荐

