此语句返回1-100中的所有数字,但未应用fizz-buzz规则。不知道为什么。你能解释一下吗?
for (var number = 1; number <= 100; number++) {
switch(number) {
case number % 3 == 0:
console.log('Fizz');
break;
case number % 5 == 0:
console.log('Buzz');
break;
case number % 5 == 0 && number % 3 == 0:
console.log('FizzBuzz');
break;
default:
console.log(number);
break;
}
}
答案 0 :(得分:4)
您正在将数字与布尔表达式进行比较。该开关等同于:
if (number == (number % 3 == 0)) {
console.log('Fizz');
} else if (number == (number % 5 == 0)) {
console.log('Buzz');
} else if (number == (number % 5 == 0 && number % 3 == 0)) {
console.log('FizzBuzz');
} else {
console.log(number);
}
使用if
语句而不是开关,并首先检查双重条件:
if (number % 5 == 0 && number % 3 == 0) {
console.log('FizzBuzz');
} else if (number % 3 == 0) {
console.log('Fizz');
} else if (number % 5 == 0) {
console.log('Buzz');
} else {
console.log(number);
}
答案 1 :(得分:1)
数字与案例的表达式匹配,因此如果数字是3,则不匹配&#34;数字%3 == 0&#34;因为&#34;数字%3 == 0&#34;是真的,而不是3
答案 2 :(得分:-1)
您的代码永远不会出现这种情况:
case number % 5 == 0 && number % 3 == 0
因为它已经成为第一种情况:
case number % 3 == 0:
解决这个问题的一种方法是将语句更改为:
case number % 3 == 0 && number % 5 != 0
case number % 5 == 0 && number % 3 != 0