English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
switchはif ... else ...と同じ条件文ですが、switch文は値リストに基づいて変数が等しいかどうかをテストできるという点で異なります。
switchを使用して、実行する多くのコードブロックから一つを選択します。これはif…else文のネストが多い場合の完璧な解決策です。
以下のようにswitch文は示されます:
switch (expression) { case value1: //文が実行されます //式の結果はvalueと一致します1一致 break; case value2: //文が実行されます //式の結果はvalueと一致します2一致 break; ... case valueN: //文が実行されます //式の結果はvalue Nと一致します break; default: //上記のいずれも実行されない場合 //ここのコードブロックを実行します }
上記のコードブロックのロジックに従って、これから発生するイベントの順序は以下の通りです:
switch式は一度だけ評価されます
式の値を各ケースの値と比較します
一致した場合、関連するコードブロックを実行します
すべてのケースに一致しない場合、デフォルトのコードブロックを実行します
以下の例では、仕事曜日の番号を使用して曜日を計算します:
var day; switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: day = "Undefined Day"; }テストを見て‹/›
breakは各caseタグに関連付けられたキーワードであり、一致する文が実行されると、プログラムはスイッチを退出し、その後の文で実行を続行します。breakを省略すると、プログラムはswitch文の次の文で実行を続行します。
休憩を忘れた場合、スクリプトは条件を満たす状態から実行を開始し、条件を満たす状態で実行状況が続行されます:
var num = Number(document.querySelector("input").value); var text; switch(num) { case 1: text = "あなたが入力した番号は" 1"; case 2: text = "あなたが入力した番号は" 2"; case 3: text = "あなたが入力した番号は" 3"; case 4: text = "あなたが入力した番号は" 4"; case 5: text = "あなたが入力した番号は" 5"; default: text = "デフォルトのステートメントを実行"; }テストを見て‹/›
switchブロックの最後の種別(つまりdefault)を中断する必要はありません。なぜなら、文のブロックはここで最終的に中断(終了)するからです。
caseが一致しない場合、defaultキーワードで実行するコードを指定します。
switch内でデフォルトのステートメントは1つのみです。これはオプションですが、推奨します。なぜなら、予想外の状況を処理できるからです。
場合によっては、異なる状況で同じコードを使用したり、汎用のコードを使用したいことがあります。
これは、4つの異なる値が完全に同じ操作を実行する操作順switch文の例です:
var num = Number(document.querySelector("input").value); var text; switch(num) { case 1: case 2: case 3: case 4: text = "あなたが入力した数字は" 1 - 4"; break; case 5: case 6: case 7: case 8: text = "あなたが入力した数字は" 5 - 8"; break; default: text = "デフォルトのステートメントを実行"; }テストを見て‹/›
複数のcaseが値に一致する場合、最初のcaseを選択します。
一致するcaseが見つからない場合、プログラムはデフォルトのタグを使用し続けます。
デフォルトのタグが見つからない場合、プログラムは次のステートメントの実行に続行します。