我 "solved" FizzBuzz,但我不明白它为什么起作用
I "solved" FizzBuzz, but I don't understand why it's working
我完全绿了。刚开始阅读 Eloquent JavaScript,第 2 章有一些练习。
显然 "FizzBuzz" 问题不需要介绍。我花了一个小时的大部分时间来诚实地尝试不同的方法。
终于找到了一个不太eloquent的解决方案。但是当我看着它时,我不明白它是如何工作的:
var x = 1
while (x <= 20){
if (x % 5 == 0 && x % 5 == 0){
console.log("FizzBuzz");
}
else if (x % 5 == 0){
console.log("Buzz");
}
else if (x % 3 == 0){
console.log("Fizz");
}
else
console.log(x);
x++;
}
因此,根据我目前的理解:我希望此脚本在第一个 "Fizz" 中计数为 3,然后陷入无限循环。
显然我理解错了。脚本如何从这里移动到“4”?
感谢阅读。
如果格式正确,它就会很明显。
var x = 1
while (x <= 20){
if (x % 5 == 0 && x % 3 == 0){
console.log("FizzBuzz");
}
else if (x % 5 == 0){
console.log("Buzz");
}
else if (x % 3 == 0){
console.log("Fizz");
}
else
console.log(x);
x++;
}
也就是说,x++
独立于条件语句执行,因为else
子句没有大括号,所以它只考虑一个语句(即console.log
)
我还更正了您在第一个条件中遇到的错误(您检查了两次 x%5
而不是检查 x%3
)。
因为else
没有括号,所以只执行后面的一条命令。所以 x++
在每次迭代时都会执行。
顺便说一下,您应该将 if (x % 5 == 0 && x % 5 == 0)
更改为 if (x % 3 == 0 && x % 5 == 0)
。
我完全绿了。刚开始阅读 Eloquent JavaScript,第 2 章有一些练习。
显然 "FizzBuzz" 问题不需要介绍。我花了一个小时的大部分时间来诚实地尝试不同的方法。
终于找到了一个不太eloquent的解决方案。但是当我看着它时,我不明白它是如何工作的:
var x = 1
while (x <= 20){
if (x % 5 == 0 && x % 5 == 0){
console.log("FizzBuzz");
}
else if (x % 5 == 0){
console.log("Buzz");
}
else if (x % 3 == 0){
console.log("Fizz");
}
else
console.log(x);
x++;
}
因此,根据我目前的理解:我希望此脚本在第一个 "Fizz" 中计数为 3,然后陷入无限循环。
显然我理解错了。脚本如何从这里移动到“4”?
感谢阅读。
如果格式正确,它就会很明显。
var x = 1
while (x <= 20){
if (x % 5 == 0 && x % 3 == 0){
console.log("FizzBuzz");
}
else if (x % 5 == 0){
console.log("Buzz");
}
else if (x % 3 == 0){
console.log("Fizz");
}
else
console.log(x);
x++;
}
也就是说,x++
独立于条件语句执行,因为else
子句没有大括号,所以它只考虑一个语句(即console.log
)
我还更正了您在第一个条件中遇到的错误(您检查了两次 x%5
而不是检查 x%3
)。
因为else
没有括号,所以只执行后面的一条命令。所以 x++
在每次迭代时都会执行。
顺便说一下,您应该将 if (x % 5 == 0 && x % 5 == 0)
更改为 if (x % 3 == 0 && x % 5 == 0)
。