JavaScript/switch
switch
switch は、JavaScript のキーワードで、複数の条件に基づいて異なるコードブロックを実行するために使用される制御構文です。switch 文は、if...else if...else 文に似ていますが、複数の条件を比較する際により簡潔で読みやすくなります。
構文
switch (式) { case 値1: // 値1の場合の処理 break; case 値2: // 値2の場合の処理 break; default: // どれにも一致しない場合の処理 }
switch 文は指定した式を評価し、各 case ラベルで定義された値と一致する場合、そのコードブロックを実行します。もしどの case にも一致しなければ、default ブロックが実行されます。
使用例
基本的な使用法
let fruit = 'apple'; switch (fruit) { case 'apple': console.log('This is an apple'); break; case 'banana': console.log('This is a banana'); break; default: console.log('Unknown fruit'); } // 出力: This is an apple
この例では、fruit 変数が 'apple' と一致したため、case 'apple' が実行され、「This is an apple」がコンソールに出力されます。
複数の値を同じコードブロックで処理する
let fruit = 'banana'; switch (fruit) { case 'apple': case 'banana': console.log('This is either an apple or a banana'); break; default: console.log('Unknown fruit'); } // 出力: This is either an apple or a banana
switch 文では、複数の値を一つの case にまとめて処理することができます。上記の例では、fruit が 'apple' または 'banana' の場合に同じコードブロックが実行されます。
break の使用
let number = 2; switch (number) { case 1: console.log('Number is 1'); break; case 2: console.log('Number is 2'); break; case 3: console.log('Number is 3'); break; default: console.log('Unknown number'); } // 出力: Number is 2
break キーワードは、switch 文の実行を終了し、switch 文の外に処理を移すために使います。break がないと、次の case に進んでしまう「フォールスルー」が発生します。
フォールスルーの例
let number = 2; switch (number) { case 1: console.log('Number is 1'); break; case 2: console.log('Number is 2'); case 3: console.log('Number is 3'); break; default: console.log('Unknown number'); } // 出力: // Number is 2 // Number is 3
case 2 には break がないため、case 3 まで処理が進んでしまい、両方のメッセージが出力されます。
型の比較
let number = '2'; switch (number) { case 2: console.log('Number is 2'); break; case '2': console.log('String is "2"'); break; default: console.log('Unknown value'); } // 出力: String is "2"
switch 文では、厳密な比較(型と値の両方を比較)を行います。上記の例では、number が文字列 '2' であるため、case '2' が実行されます。
default の使用
let number = 4; switch (number) { case 1: console.log('Number is 1'); break; case 2: console.log('Number is 2'); break; default: console.log('Number is not 1 or 2'); } // 出力: Number is not 1 or 2
default は、どの case にも一致しない場合に実行されるコードブロックです。ここでは、number が 1 や 2 に一致しなかったため、default が実行されます。