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

Chrome控制台FizzBuzz函数失效:无法替换对应数字为指定字符串

FizzBuzz代码未执行替换的问题分析

问题描述

我尝试在Chrome JavaScript控制台编写FizzBuzz测验,要求:

  • 数组中能被5整除的数字替换为"Fizz"
  • 能被3整除的替换为"Buzz"
  • 同时被5和3整除的替换为"FizzBuzz"
  • 每次调用fizzBuzz()函数生成后续数字

但当前代码仅输出数字,未进行替换:

  • 预期输出:
    [1,2,"Buzz",4,"Fizz","Buzz",7,8,"Buzz","Fizz",11,"Buzz",13,14,"FizzBuzz"]
    
  • 实际输出:
    [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
    

当前代码:

var output=[];
var previous = 1;
function fizzBuzz(){
    if (output[(previous-1)]%5===0 && output[(previous-1)]%3===0){
        output.push(("FizzBuzz"));
        console.log(output);
        previous++;
    }
    else if (output[(previous-1)]%5===0){
         output.push("Fizz");
        console.log(output);
        previous++;
        
    }
    else if (output[(previous-1)]%3===0){
         output.push("Buzz");
        console.log(output);
        previous++;
    }
    else {
        output.push(previous);
        console.log(output);
        previous++;
        
    }
    
}

失效原因

核心问题是判断条件的对象完全错误:

  • 你用output[previous-1]作为判断整除的目标,但这个值在每次调用时都是undefined:
    • 第一次调用时,output是空数组,output[0]不存在,值为undefined
    • 后续调用时,previous是当前要生成的数字,此时output的长度是previous-1,output[previous-1]超出数组索引范围,依然是undefined
  • undefined % 任何数字的结果都是NaN,所有if/else if条件都会判断为false,只会进入最后一个else分支,直接push数字previous,导致完全没有替换效果。

修正后的代码

把所有判断条件里的output[previous-1]替换为当前要处理的数字previous即可:

var output = [];
var previous = 1;
function fizzBuzz() {
    if (previous % 15 === 0) { // 先判断同时被3和5整除(即被15整除)
        output.push("FizzBuzz");
    } else if (previous % 5 === 0) {
        output.push("Fizz");
    } else if (previous % 3 === 0) {
        output.push("Buzz");
    } else {
        output.push(previous);
    }
    console.log(output);
    previous++;
}

额外优化点

  • 把同时被3和5整除的判断改成previous % 15 === 0,逻辑更简洁(15是3和5的最小公倍数)
  • 把重复的console.log(output)和previous++移到条件分支外,减少冗余代码

内容的提问来源于stack exchange,提问作者victor robin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:20:44