如何使用For循环实现BuzzFizz问题并优化输出逻辑
调整后的类BuzzFizz逻辑实现代码
你需要的效果是仅当数字不匹配任何字符串规则时才输出数字,原代码的逻辑其实已经符合这个要求,不过可以优化写法让逻辑更清晰直观:
for (let a = 1; a < 101; a++) { let output = ''; if (a % 3 === 0) output += 'buzz'; if (a % 5 === 0) output += 'tuf'; console.log(output || a); }
代码说明:
- 用
let替换原代码的var,避免变量提升带来的潜在问题 - 先初始化空字符串
output,根据数字的整除情况拼接对应字符串 - 通过
output || a实现判断:如果output有内容(匹配了字符串规则)就输出字符串,否则输出数字本身
如果想保留原有的if-else结构,原代码其实已经满足需求——因为else分支只会在前面所有字符串规则都不匹配时执行,也就是只有无对应字符串时才输出数字。若要优化变量声明,调整后的代码如下:
for (let a = 1; a < 101; a++) { if (a % 3 === 0 && a % 5 === 0) { console.log("buzztuf"); } else if (a % 3 === 0) { console.log("buzz"); } else if (a % 5 === 0) { console.log("tuf"); } else { console.log(a); } }
内容的提问来源于stack exchange,提问作者Rohan Sharma
相关产品推荐
相关产品推荐

