熊本大学大学院教授システム学専攻
目次:
【第12回】JavaScript 2 (基本構文、制御構造(if, for, etc.))
第1章
--第12回タスクチェッカー
※公開科目にはありません
第3章
第4章
第5章

条件分岐制御文2 (switch...case)

【本節の目的】
条件分岐制御文は選択制御文とも呼ばれ、JavaScriptではその条件分岐の構文によってif...else構文とswitch...case構文があります。今節ではswitch文について説明します。

switch...case構文の基本

switch...case文は下記のような書式となります。

switch (評価値) {
  case 評価値1:文1;文2;...;break;
  case 評価値2:文3;文4;...;break;
  case 評価値3:文5;文6;...;break;
            ..........;
  default: 文7;文8;...;
}

swicthの中の評価値(integral constant)は評価式値(真偽値)では なく数値となります。 ラベルとしてのcase文を必要な処理の分だけ記述します。 case文の横には一つだけ数値ラベルを書きます。 case文の数値ラベルと評価値がどれも一致しない場合は、default ラベル文で対応します。 このdefault文は省略できますが、同時に数値ラベルに評価値が一つも 一致しない場合には、switch文の制御文の次の文に制御が移ります。 もしcaseの数値ラベルの評価値が一致する場合は、一致した数値ラベル を持つcase文に制御が移り、break;文が出現するまで、複数の 文を実行します。そしてbreak;文が現れたら、switch文の外へ制御 が移ります。 具体的には下記プログラムで確認してください。

サンプル1(swtich1.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta http-equiv="Content-Script-Type" content="text/javascript
 charset=utf-8">
 <title>switch...case文の実験1</title>
</head>
<body>
<h3>switch...case文の実験1</h3>
 <script type="text/javascript">
 <!--
    document.write('<br>');
    k=2;
    switch(k) {
      case 1:
      case 2: i=0;j=9;
              document.write('k=',k,'ならi=',i,' j=',j); break;
              document.write('<br>');
      case 3: i=3;j=4;
              document.write('k=',k,'ならi=',i,' j=',j); break;
              document.write('<br>');

     default: document.write('なんにもなーい(´ヘ`;)');
    }
 //-->
 </script>
</body>
</html>

サンプル2(swtich2.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta http-equiv="Content-Script-Type" content="text/javascript
 charset=utf-8">
 <title>switch...case文の実験2</title>
</head>
<body>
<h3>switch...case文の実験2</h3>
 <script type="text/javascript">
 <!--
    day=new Date();
    a=day.getDay()
    switch(a) {
      case 0: document.write('日曜日だね ',a);break;
      case 6: document.write('土曜日だね ',a);break;
     default: document.write('平日だぁ(´ヘ`;) ',a);
    }
 //-->
 </script>
</body>
</html>

突然switch caseともに出現したbreak;文ですが、これも制御文の一種で非常に強力な機能を持っています。条件構文中にこのbreak;が現れる とその時点で制御が条件構文中の外へ移ります。 また後述する繰り返し制御文等では、このbreak;文が現れた時点で 制御文を一度に脱出してしまいます。特に繰り返し制御文の中に 繰り返し制御文があり、その内側の繰り返し制御文の更に内側に break;文がある場合で、break;が実行されると、内側の繰り返し 制御文の外に制御が移ります。

Copyright (c) Yasuo Musashi 2003, All Rights Reserved