前の章と同様に、複数の if...else if ステートメントを使用して、複数の分岐を実行できます。ただし、特にすべての分岐が 1 つの変数の値に依存する場合、これが常に最適な解決策であるとは限りません。
JavaScript 1.2 以降では、switch ステートメントを使用して、まさにこの状況を処理することができます。これにより、if...else if ステートメントを繰り返し使用する代わりに、より効率的に処理を行うことができます。
文法
switch ステートメントの基本構文は、式の値に基づいていくつかの異なるステートメントを評価および計算する式を提供します。インタプリタは、一致するものが見つかるまで、式の値をそれぞれのケースでチェックします。一致するものがない場合は、デフォルトの条件が使用されます。
switch (expression) { case condition 1: statement(s) break; case condition 2: statement(s) break; ... case condition n: statement(s) break; default: statement(s) }
break ステートメントは、特定の状況下でインタープリタを終了するように指示します。これらが省略された場合、インタプリタは次のそれぞれの場合に各ステートメントの実行を継続します。
break文についてはループ制御の章で説明します。
例:
次の例は、基本的な while ループを示しています。
<script type="text/javascript"> <!-- var grade='A'; document.write("Entering switch block<br />"); switch (grade) { case 'A': document.write("Good job<br />"); break; case 'B': document.write("Pretty good<br />"); break; case 'C': document.write("Passed<br />"); break; case 'D': document.write("Not so good<br />"); break; case 'F': document.write("Failed<br />"); break; default: document.write("Unknown grade<br />") } document.write("Exiting switch block"); //--> </script>
これにより、次の結果が生成されます:
Entering switch block Good job Exiting switch block
例:
break ステートメントが使用されていない場合は、次のような状況を考慮してください。
<script type="text/javascript"> <!-- var grade='A'; document.write("Entering switch block<br />"); switch (grade) { case 'A': document.write("Good job<br />"); case 'B': document.write("Pretty good<br />"); case 'C': document.write("Passed<br />"); case 'D': document.write("Not so good<br />"); case 'F': document.write("Failed<br />"); default: document.write("Unknown grade<br />") } document.write("Exiting switch block"); //--> </script>
これにより、次の結果が生成されます:
Entering switch block Good job Pretty good Passed Not so good Failed Unknown grade Exiting switch block