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' の場合に同じコードブロックが実行されます。
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'
が実行されます。
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
が実行されます。
注意点
編集switch
文では、case
ラベルで指定された値と式の評価結果が厳密に比較されます。つまり、型も一致しなければなりません。switch
文は、非常に多くのcase
を持つ場合に特に便利ですが、コードの可読性を高めるためには適切にコメントを追加したり、default
を使用して予期しない値に対処することが重要です。break
を忘れると、フォールスルーによって後続のcase
が実行される可能性があるため注意が必要です。