1

フィズバズテストを行ったところですが、以下の回答とは異なる方法で行いました. 代わりに、最初の「if」ステートメント (つまり、i%3===0 && i%5===0) を最後の「else if」ステートメントとして配置しましたが、何らかの理由で機能しませんでした。しかし、私の論理は同じです。

なぜそれが機能しないのか誰かが知っていますか?if、else ステートメントをどの位置に配置するかは本当に重要ですか? 以下、回答要点です。

for(var i = 1; i < 100; i++){
      if(i%3 === 0 && i%5 === 0){
        console.log("FizzBuzz");
      }
      else if(i%3 === 0) {
        console.log("Fizz");
      }
      else if(i%5 === 0){
        console.log("Buzz");
      }
      else {
        console.log(i);
      }
}

これが私の答えでした:

for(var i = 1; i < 100; i++){
     if (i%5 === 0){
        console.log("Buzz");
      }
      else if(i%3 === 0) {
        console.log("Fizz");
      }
      else if (i%3 === 0 && i%5 === 0){
        console.log("FizzBuzz");
      }
      else {
        console.log(i);
      }
}
4

1 に答える 1

3

チェーンif (i%3 === 0 && i%5 === 0)の最後に配置すると、前のブランチの1 つだけが入力されます。つまり、または. を使用しているため、結合された "FizzBu​​zz" に制御が入ることはありません。ifif (i%3 === 0)if (i%5 === 0)else ifif

例: としましょうi = 15。次のコードがある場合:

if(i%3 === 0 && i%5 === 0) {
    console.log("FizzBuzz");
}
else if(i%3 === 0) {
    console.log("Fizz");
}
else if(i%5 === 0) {
    console.log("Buzz");
}
else {
    console.log(i);
}

あなたの出力は になりますFizzBuzz。ただし、結合ifを最後に移動すると、次のようになります。

if(i%3 === 0) {
    console.log("Fizz");
}
else if(i%5 === 0) {
    console.log("Buzz");
}
else if(i%3 === 0 && i%5 === 0) {
    console.log("FizzBuzz");
}
else {
    console.log(i);
}

Fizzその場合、出力は になりますi%3 === 0

于 2014-08-04T22:11:33.887 に答える