switch

switchは条件に従って実行するステートメントを決定します。

条件に応じて、特定のステートメントを実行したいときにswitchを使います。
たとえば、変数nの値が0のときにあるコードを実行し、nが1のときには別のコードを実行し、 nが2のときにはさらに別のコードを実行したい、というような場合に、条件を決定する値に応じて実行するステートメントを切り替えるときにswitchを使います。
switchステートメントの書式は次のとおりです。


  switch (expr) {
    case label1:
      statements1
      [break;]
    case label2:
      statements2
      [break;]
       ...
    case labeln:
      statementsn
      [break;]
    default:
      statements_def
      [break;]
  }
  

exprには各ラベル(labeln)と一致するか調べる式を指定します。一般的には整数や文字列を含む変数を指定します。
labelnはexprと一致するかどうか調べるのに使う識別子で、exprがlabelnと一致したらstatementsnが実行されます。
statements_defは、exprがいずれのラベルにも一致しなかった場合に実行されるステートメント(デフォルトのステートメント)です。

次の例は、switchステートメントを使って変数nの値に応じて「Zero」「One」「Other」のいずれかを出力する例です。


  <script type="text/javascript">
    var n = prompt("数値を入力してください", 0);
    switch (n) {
      case "0":
        document.write("Zero");
        break;
      case "1":
        document.write("One");
        break;
      default:
        document.write("Other");
        break;
    }
  </script>
  

この場合、条件式exprは「n」であり、statement1が「document.write("Zero");」、「document.write("One");」です。
nが"0"の場合は、「case "0":」のあとで次の「break」の直前の行までのコードが実行されます。 この場合は「document.write("Zero")」が実行されるので、nが0の場合は「Zero」と出力されます。 同様に、nが1の場合は、「case 1」のあとの「break」までのコードが実行されて「One」と出力されます。 nが0でもなく1でもない場合は、「document.write("Other")」が実行されて「Other」が出力されます。 つまり、「default」はほかのcaseに一致する値がないときに実行するデフォルトのコードを記述するというわけです。

なお、「default」のあとのbreakは省略してもしなくてもプログラムの動作に影響はありませんが、 あとでcase文を追加したようなときにbreakを忘れないためにも、省略しないほうがよいでしょう。

caseステートメントのあとでbreakを使わないと、caseで一致する値を複数で指定することもできます。

次の例は、nが"0"のときにbreakを使わずに次の「case "1"」のあとのコードを実行するようにして、 結果としてnが"0"のときとnが"1"のときに「Zero or One」を出力するようにしたスクリプトの例です。


  var n = prompt("数値を入力してください", 0);
  switch (n){
    case "0":                  // nが"0"のときと
    case "1":                  // nが"1"のとき
      document.write("Zero or One");
      break;
    default:                   // それ以外のとき
        document.write("Other");
      break;
  }
  

case文で調べる値は文字列でもかまいません。次の例は「犬」または「猫」を入力するとその鳴き声を表示するスクリプトの例です。


  <script type="text/javascript">
    var s = prompt("「犬」または「猫」を入力してください");
    switch (s) {
      case "犬":
        document.write("わんわん");
        break;
      case "猫":
        document.write("にゃーご");
        break;
      default:
        document.write("犬か猫にするべし");
        break;
      }
  </script>
  

関連項目

if


JavaScript目次 inserted by FC2 system