如果我采用第一个“if”语句并将其作为第三个“else if”语句,为什么这不起作用?只想了解。谢谢!
function fizzBuzz(num) {
if ((num % 3 === 0) && (num % 5 === 0)) {
return 'fizzbuzz';
} else if (num % 3 === 0) {
return 'fizz';
} else if (num % 5 === 0) {
return 'buzz';
} else {
return num;
}
// if num is divisible by 3 return 'fizz'
// if num is divisible by 5 return 'buzz'
// if num is divisible by 3 & 5 return 'fizzbuzz'
// otherwise return num
}
答案 0 :(得分:4)
if-else-if语句仅在其中一个if语句变为true之前有效。
此方案可防止检查其他“其他条件”。 在第二种情况下,如果3或5的模数“num”为0,它将停止检查其他if语句,
有必要优先考虑if-else-if条件的顺序。
答案 1 :(得分:1)
是请记住,如果/ else-if / else按顺序执行,并在找到可接受的情况时停止。在您的示例中,如果(num % 3 === 0)
您将返回返回' fizz'那条件是真的。所以这是(num%5 === 0)和(num%3 === 0)&& (num%5 === 0))不是互斥的 - 它们都可以是真的,所以顺序很重要。
答案 2 :(得分:1)
所以if / else if语句的工作方式是,只要其中一个if为true,就会执行if语句中的代码,然后跳过其余的ifs和else语句。但是,在这种情况下,返回结束函数,因此它会跳过方法中的其余代码。
答案 3 :(得分:1)
如果是,否则如果一个人检查每个条件。如果任何条件块执行,则其余条件不起作用。
function fizzBuzz(num) {
if ((num % 3 === 0) && (num % 5 === 0)) {
return 'fizzbuzz';
} else if (num % 3 === 0) {
return 'fizz';
} else if (num % 5 === 0) {
return 'buzz';
} else {
return num;
}
// if num is divisible by 3 return 'fizz'
// if num is divisible by 5 return 'buzz'
// if num is divisible by 3 & 5 return 'fizzbuzz'
// otherwise return num
}
在您的示例中,如果您将第一个条件放在第三个块中,即else if
,如果该数字可被3或5整除,则相应的条件块工作并导致跳过第三个块。执行顺序在if-else-if
阶梯中很重要。