## 構文

[up] [prev] [next]

#### ■ 一覧

break, case, continue, do, else, for, for in, goto, if, switch, while, with

#### ■ 条件分岐（if）

◆ if (expression) statements1 else statements2 (e3/N2)

expression が真であれば statements1 を、さもなくば statements2 を実行します。例えば次の例では、変数 n の値が 10 より小さければ、SMALL を、さもなくば BIG を表示します。

    if (n < 10) {
        alert("SMALL");
    } else {
        alert("BIG");
    }

else 以降は記述しない場合もあります。

    if (n < 10) {
        alert("SMALL");
    }

次のような書き方もできます。

    if (n < 10) {
        alert("SMALL");       // 10より小さければ SMALL を
    } else if (n > 20) {
        alert("BIG");         // 20より大きければ BIG を
    } else {
        alert("NORMAL");      // さもなくば NORMAL を表示
    }

#### ■ 条件分岐（switch）

◆ switch (expression) { case value: statements; ... } (e3/N2)

expression の値に応じて処理を振り分けます。次の例では、xx の値が 1 なら ONE を、2 なら TOW を、3 か 4 なら THREEorFOUR を、それ以外なら OTHER を表示します。Netscape Navigator の場合、value に変数を用いると、プログラムが不正動作を起こすようです。

    switch (xx) {
    case 1:
        alert("ONE");
        break;
    case 2:
        alert("TWO");
        break;
    case 3:
    case 4:
        alert("THREEorFOUR");
        break;
    default:
        alert("OTHER");
        break;
    }

#### ■ 繰り返し（while）

◆ while (expression) statements (e3/N2)

expression が真である間、statements を繰り返します。次の例では 0123456789 と表示されます。

    n = 0;
    while (n < 10) {
        document.write(n);
        n++;
    }

#### ■ 繰り返し（do）

◆ do statements while (expression) (e3/N2)

expression が真である間、statements を繰り返します。次の例では 0123456789 と表示されます。最初から expression が偽であっても、statements が少なくとも1回は実行される点が while (...) {...} と異なります。Internet Explorer 4.0 以降、Netscape Communicator 4.0 以降で使用可能です。

    n = 0;
    do {
        document.write(n);
        n++;
    } while (n < 10);

#### ■ 繰り返し（for）

◆ for (expression1; expression2; expression3) statements (e3/N2)

最初に expression1 を実行し、次に、statements と expression3 を expression2 が真である間繰り返します。次の例は10回繰り返す処理の典型的な例で、0123456789 と表示されます。

    for (i = 0; i < 10; i++) {
        document.write(i);
    }

◆ for (variable in array) statements (e3/N2)

配列のすべての要素に関する処理を行います。次の例では ABC が表示されます。

    xx = new Array(3);
    xx[0] = "A";
    xx[1] = "B";
    xx[2] = "C";
    for (i in xx) {
        document.write(xx[i]);
    }

for を用いてオブジェクトが持つ属性の一覧を調べることもできます。ただし、これで調べられない属性（DontEnum属性を持つ属性）もあります。

    for (i in navigator) {
        document.write(i, "<br>");
    }

#### ■ ループを抜ける（break）

◆ break (e3/N2)
◆ break label (e4/N4)

break は、最も内側の for、while、do ループや、switch 文の case 節を抜けます。次の例では、01234 と表示されます。

    for (i = 0; i < 10; i++) {
        if (i == 5) {
            break;
        }
        document.write(i);
    }

label は入れ子になったループを一度に抜けたい場合に用います。JavaScript 1.2 以降で使用可能です。次の例では、i が 20 より大きくなったときに、外側の for ループを抜けます。

    abc:
      for (i = 0; i < 10; i++) {
          for (j = 0; j < 10; j++) {
              xx = i * 10 + j;
              if (xx > 20) {
                  break abc;
              }
              document.write(xx + "<br>");
          }
      }

#### ■ ループを続ける（continue）

◆ continue (e3/N2)
◆ continue label (e4/N4)

ループ内の残りの処理をスキップし、もっとも内側の for, while, do ループの次のループを実行します。次の例では 5 がスキップされて 012346789 と表示されます。

    for (i = 0; i < 10; i++) {
        if (i == 5) {
            continue;
        }
        document.write(i);
    }

label を指定した場合は、ラベルで指定したループの次のループを実行します。JavaScript 1.2 以降で使用可能です。

    abc:
      for (i = 0; i < 10; i++) {
          for (j = 0; j < 10; j++) {
              xx = i * 10 + j;
              if (xx == 55) {
                  continue abc;
              }
          }
      }

#### ■ ラベル（label）

◆ label: (e4/N4)

スクリプト中の位置にラベルをつけます。ラベルは break 文や continue 文で参照します。JavaScript 1.2 以降で使用可能です。

    label1:
      for (i = 0; i < 10; i++) {
          for (j = 0; j < 10; j++) {
              if (func(i, j) {
                  break label1;
              }
          }
      }

#### ■ オブジェクト参照（with）

◆ with (obj) statements (e3/N2)

obj で指定したオブジェクトについて処理を行います。例えば、次の例は、

    document.write(document.bgColor);
    document.write(document.fgColor);

with を用いて、次のように書くことができます。

    with (document) {
        write(bgColor);
        write(fgColor);
    }

#### ■ ジャンプ（goto）

◆ goto label (e-/N-)

JavaScript では goto 文はサポートされていません。私はエラー発生時に関数末尾にジャンプしてロールバック処理をまとめて行うときなどに goto 文を使用するのが好きなので、JavaScript で goto 文がサポートされていないのはちょっと悲しいのですが・・・

[up] [prev] [next]
Copyright (C) 1996-2001 杜甫々
改訂版初版：2001年5月20日
最終更新日：2001年10月4日
http://www.tohoho-web.com/js/statement.htm