JavaScriptの分岐処理、例外処理
if、else
if (n < 10) {
alert("SMALL");
} else {
alert("BIG");
}
if、else if、else
if (n < 10) {
alert("SMALL");
} else if (n > 20) {
alert("BIG");
} else {
alert("NORMAL");
}
switch
switch (xx) {
case 1: //xxの値が1なら
alert("ONE");
break;
case 2:
alert("TWO");
break;
case 3:
case 4:
alert("THREEorFOUR");
break;
default:
alert("OTHER");
break;
}
while
n = 0;
while (n < 10) {
document.write(n);
n++;
}
do while
n = 0;
do {
document.write(n);
n++;
}
while (n < 10);
※とりあえず1回実行される点が while(){} と異なる
for
for (i=0;i<10;i++) {
document.write(i);
}
for:配列
配列のすべての要素に関する処理を行う
xx = new Array(3);
xx[0] = "A";
xx[1] = "B";
xx[2] = "C";
for (i in xx) {
document.write(xx[i]); //「A」「B」「C」が表示される
}
for:オブジェクトが持つ属性の一覧を調べる
for (i in navigator) {
document.write(i, "<br>");
}
※DontEnum属性は調べることができない
break;
もっとも内側のfor、while、do ループや、switch文の case節を抜ける
break; とラベル
label は入れ子になったループを一度に抜けたい場合に用いる
例)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;
ループ内の残りの処理をスキップし、もっとも内側の for、while、do ループの次のループを実行
例)5 がスキップされて 012346789 と表示される
for (i=0;i<10;i++) {
if(i==5)
{continue;}
document.write(i);
}
continue; とラベル
label を指定した場合、ラベルで指定したループの次のループを実行
abc:
for (i=0;i<10;i++) {
for(j=0;j<10;j++) {
xx = i*10+j;
if(xx == 55)
{continue abc;}
}
}
with
指定したオブジェクトについて処理を行う
document.write(document.bgColor);
document.write(document.fgColor);
↓
with(document) {
write(bgColor);
write(fgColor);
}
例外処理:try~catch~finally命令
エラー(例外)が発生しても、スクリプト全体が停止しないようにする
try {
例外が発生するかもしれない命令
} catch(例外情報を受け取る変数) {
例外発生した場合の命令
}
try {
例外が発生するかもしれない命令
} catch(例外情報を受け取る変数) {
例外発生した場合の命令
} finally {
例外の有無にかかわらず、最終的に実行される命令
}
例
var = 1;
try {
i = i * j;
} catch(e) {
document.writeln(e.message); //'j'は宣言されていません。
} finally {
document.writeln('処理は完了しました。');
}