構文

[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 を実行し、次に、statementsexpression3expression2 が真である間繰り返します。次の例は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