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

使用JavaScript Switch实现FizzBuzz遇问题:代码无效求排查

排查你的FizzBuzz代码问题

嘿,我一眼就揪出问题啦!你的JavaScript代码没法正常实现FizzBuzz,核心问题出在switch语句的使用逻辑错误上。

错误原因解析

JavaScript的switch语句是拿括号里的表达式(你这里写的是i)和每个case后面的值做严格相等(===)比较。而你在case里写的是条件判断(比如i%3 === 0 && i%5 === 0),这些条件的计算结果是布尔值true或false。但i是1到100的数字,数字和布尔值永远不会严格相等,所以所有case都不会被命中,自然不会输出你想要的内容。

举个例子:当i=15时,第一个case的条件结果是true,但switch会判断15 === true,这个结果是false,所以不会执行该分支的代码。

修正方案

这里给你两种可行的修正方式:

方式1:调整switch的表达式为true

把switch的表达式改成true,这样每个case的布尔值结果就能和它匹配:

for(var i = 1; i <= 100; i++) {
  switch (true) {
    case (i%3 === 0 && i%5 === 0):
      console.log('FizzBuzz');
      break;
    case (i%3 === 0):
      console.log('Fizz');
      break;
    case (i%5 === 0):
      console.log('Buzz');
      break;
    default:
      console.log(i); // 处理既不能被3也不能被5整除的数字
  }
}

方式2:改用更直观的if-else逻辑

这是实现FizzBuzz最常用的写法,逻辑更清晰易懂:

for(var i = 1; i <= 100; 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);
  }
}

另外,你原来的代码里def...应该是没写完的default分支,一定要加上它才能打印那些既不是Fizz、Buzz也不是FizzBuzz的数字哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:00:19