JS - 为什么这个if / else的顺序很重要?

时间:2017-10-19 05:05:01

标签: javascript

如果我采用第一个“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
}

4 个答案:

答案 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阶梯中很重要。