JavaScript入門 練習問題 43:構文:条件分岐の挙動
次のswitch文を実行したときのコンソールへの出力として正しいものはどれですか?
```javascript
const color = 'red';
switch (color) {
case 'red':
console.log('赤');
case 'blue':
console.log('青');
break;
case 'green':
console.log('緑');
}
```
- 「赤」という文字列のみがコンソールに出力される
- 「赤」と「青」という文字列が連続して出力される
- 「青」という文字列のみがコンソールに出力される
- 「赤」「青」「緑」のすべての文字列が出力される
- 文法エラーが発生するため、何も出力は行われない
正解と解説を見る
正解:「赤」と「青」という文字列が連続して出力される
case 'red'の処理が実行された後、break文がないため次のcaseの処理にそのまま進行(フォールスルー)し、「赤」と「青」という文字列が連続して出力されます。
【正解の理由】
switch文では、マッチしたcaseの処理を実行した後、break文に到達するかswitch文が終わるまで、後続のcaseの処理も続けて実行します。このコードではcase 'red'にbreakがないため、case 'blue'の処理も実行されます。
【不正解の理由】
• 「『赤』という文字列のみがコンソールに出力される」という説明は誤り。break文がないため、次の処理も実行される
• 「『青』という文字列のみがコンソールに出力される」という説明は誤り。マッチした'red'の処理も実行される
• 「『赤』『青』『緑』のすべての文字列が出力される」という説明は誤り。case 'blue'の最後にbreak文があるため、そこで処理は終了し'green'は実行されない
• 「文法エラーが発生するため、何も出力は行われない」という説明は誤り。break文を省略すること自体は文法エラーではない