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('処理は完了しました。');
}