一直在解决 FizzBuzz 问题,我想知道为什么以下代码不会执行,没有任何内容打印到控制台。
var i = 0;
while (i = 0, i < 100, i++ ) {
if ( i % 3 === 0) {
console.log("Fizz");
} else if ( i % 5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
}
我错过了什么?
最佳答案
您使用了错误的循环结构。它应该是 for
,而不是 while
。另请注意,子句之间是分号,而不是逗号:
for (i=0; i < 100; i++) {
你拥有的是这样的:
while (i = 0, i < 100, i++) {
逗号只计算左侧,丢弃结果,然后计算右侧。因此,将 i
设置为 0(并丢弃赋值返回的零值),测试 i
是否小于 100(但对由赋值返回的真实值不执行任何操作)比较),并使用最后一个表达式 (i++
) 的值作为 while
的循环条件。由于 i
为 0(这是假值),因此循环体永远不会执行。
请注意,如果您使用 ++i
来代替,则在 for
情况下没有什么区别,但您的 while
版本会永远循环而不是根本不运行,因为第一次测试真实性时,i
已经增加到 1。
关于javascript - JavaScript 中的 FizzBuzz : the code won't execute or print at all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130412/