下記のJSスニペットを参照してください。 case: 2
が一致しない場合でも、1と2の両方が印刷されます。 私はこれを防ぐためにbreak;
を置くことができますが、私はこれの背後にある本当の論理を理解したいと思います。これは、マッチがない場合にブロックを実行する意味がないためです。なぜ `switch`、` case`は一致しなくてもコードブロックを実行しますか?
var a = 1
switch(a){
case 1:
\t \t console.log(1)
case 2:
\t \t console.log(2)
}
['break'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/break)...は休憩を意味しません。 –
'switch'は* fall-through *ロジックを使用します。最初の一致するケースから開始するすべての処理を開始します。それがどれほど有用かは議論の余地がありますが、それは永遠に以来多くの言語で設計されてきた方法です。同じコードブロックを複数のケースで実行したい場合は、 – deceze
を参考にしてください。 –