我完全是绿色的。刚开始阅读Eloquent JavaScript,第2章开始练习。
显然“FizzBuzz”问题不需要介绍。我花了大约一个小时的时间给它一个诚实的去,尝试不同的方法。
最后得到了一个不那么雄辩的解决方案。但是当我看到它时,我不明白它是如何工作的:
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'上?
感谢阅读。
答案 0 :(得分:3)
如果你正确格式化它会变得明显。
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
)。
答案 1 :(得分:0)
因为else
没有括号,所以它只执行一个命令。所以x++
在每次迭代时执行。
顺便说一下,您应该将if (x % 5 == 0 && x % 5 == 0)
更改为if (x % 3 == 0 && x % 5 == 0)
。