You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我的FizzBuzz函数执行结束后返回undefined,该如何解决?

问题原因

你遇到的多余undefined输出由两点问题导致:

  • 你的fizzBuzz函数没有显式设置返回值,JavaScript中所有无明确return语句的函数,执行后默认返回undefined
  • 最后一行代码console.log(fizzBuzz(userChoice))相当于把函数默认返回的undefined额外打印了一遍,而fizzBuzz函数内部已经通过console.log完成了所有FizzBuzz结果的输出,外层的打印完全多余
  • 额外小问题:你定义fizzBuzz时没有声明形参,调用时传入的userChoice实际上没有被函数接收,当前代码依赖全局变量运行,写法不规范。
修复方案

下面两种方案任选其一即可:

  • 方案一:保留函数内部打印逻辑,直接调用函数即可
const prompt = require("prompt-sync")();

let userChoice = parseInt(prompt("Please enter a number: "));

// 新增形参接收传入的上限值,消除全局变量依赖
function fizzBuzz (limit) {
    for (let i=1 ; i <= limit; i++){
        if (i % 3 === 0 && i % 5 ===0) {
            console.log("FizzBuzz");
        }
        else if (i % 3 === 0){
            console.log("Fizz"); 
        }
        else if (i % 5 === 0){
            console.log("Buzz");
        }
        else {
            console.log(i); 
        }
    }
}

// 直接调用函数,不需要套console.log
fizzBuzz(userChoice);
  • 方案二:如果需要统一打印结果,改为函数返回结果数组后再打印
const prompt = require("prompt-sync")();

let userChoice = parseInt(prompt("Please enter a number: "));

function fizzBuzz (limit) {
    const result = []
    for (let i=1 ; i <= limit; i++){
        if (i % 3 === 0 && i % 5 ===0) {
            result.push("FizzBuzz");
        }
        else if (i % 3 === 0){
            result.push("Fizz"); 
        }
        else if (i % 5 === 0){
            result.push("Buzz");
        }
        else {
            result.push(i); 
        }
    }
    // 显式返回结果数组
    return result
}

// 此时函数有明确返回值,打印返回结果即可
console.log(fizzBuzz(userChoice));

内容的提问来源于stack exchange,提问作者Diana C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 03:09:00