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 文がサポートされていないのはちょっと悲しいのですが・・・