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 を表示
}
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;
}
expression が真である間、statements を繰り返します。次の例では 0123456789 と表示されます。
n = 0;
while (n < 10) {
document.write(n);
n++;
}
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);
最初に expression1 を実行し、次に、statements と expression3 を expression2 が真である間繰り返します。次の例は10回繰り返す処理の典型的な例で、0123456789 と表示されます。
for (i = 0; i < 10; i++) {
document.write(i);
}
配列のすべての要素に関する処理を行います。次の例では 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 は、最も内側の 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>");
}
}
ループ内の残りの処理をスキップし、もっとも内側の 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;
}
}
}
スクリプト中の位置にラベルをつけます。ラベルは break 文や continue 文で参照します。JavaScript 1.2 以降で使用可能です。
label1:
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
if (func(i, j) {
break label1;
}
}
}
obj で指定したオブジェクトについて処理を行います。例えば、次の例は、
document.write(document.bgColor); document.write(document.fgColor);
with を用いて、次のように書くことができます。
with (document) {
write(bgColor);
write(fgColor);
}
JavaScript では goto 文はサポートされていません。私はエラー発生時に関数末尾にジャンプしてロールバック処理をまとめて行うときなどに goto 文を使用するのが好きなので、JavaScript で goto 文がサポートされていないのはちょっと悲しいのですが・・・