プログラムは通常上から下へ順番に処理されていきますが、複雑なプログラムではユーザの動作や環境などによって処理を分ける必要が生じます。条件によって処理を分ける条件分岐の構文には、2通りの処理に分岐する「if~else構文」と、複数の処理に分岐する「switch~case構文」があります。
条件が真か偽かで処理を分ける(if~else構文)
if (★) {
♦
} else {
▲
}
★ 条件
♦ 条件★が真である場合の処理
▲ 条件★が偽である場合の処理
if文は、条件分岐の制御構文のひとつです。
条件文★がtrue(真)の場合は処理♦が実行され、false(偽)の場合は処理▲が実行されます。trueの場合のみ処理を行いたい場合は、else以下を記述しません。else if・・・のようにelseの後にifを続けて、さらに条件を分岐させる事も可能です。
なお、複数の処理を行いたい場合には、それらの処理全体を{}でくくります。処理が1行だけであれば、if(★)♦;のように{}を省略できます。
複文(ブロック)
{}で囲まれた部分は複文(ブロック)になります。
if構文やwhile構文などでは、すぐ後ろの1つの命令しか実行されませんが、{}で囲むことによって、複数の処理をまとめることができます。
if (条件1)
処理1; //条件1のとき実行されるのは処理1のみ
処理2;
if (条件1) {
処理1; //条件1のとき実行されるのは処理1と処理2
処理2;
}
このように{}で囲んだ場合は1つのブロックと見なされるので、その中に記述されているすべての処理が実行されます。
アクセスされた時刻を取得して、その時刻の範囲に応じてif構文で処理を分けています。
JavaScript
h = today.getHours();
if ((h > 5) && (h <= 10)) //条件1:6時から10時までの場合
document.write(“おはようございます。”);
else if ((h > 10) && (h <= 17)) // 条件1が偽でかつ、条件2:11時から17時までの場合
document.write(“こんにちは。”);
else //条件2も偽:それ以外の場合
document.write(“こんばんは。”);
document.write(“ただいま” + h + “時です。”); //すべてで実行される処理
条件によって複数の処理を振り分ける(switch~case構文)
switch(★) {
case ♦1: ▲1; break;
case ♦2: ▲2; break;・・・
default: ●;
}
★ 条件
♦ 値(♦1,♦2,…)
▲ 処理(▲1,▲2,…)
● 処理
switch文はcaseで定義された複数の選択肢の中から条件の値に合うものを選び、その処理を実行します。条件の値がcaseで定義したどの値にも当てはまらなかった場合は、defaultに進みます。
処理を抜けるにはbreak文を記述します。たとえば次の例では、★が1のとき▲1と▲1が処理され、★が♦2のとき▲2のみが処理されます。
case ♦1: ▲1;
case ♦2: ▲2;break;
case ♦3: ▲3;break;…
}
サンプルでは曜日を0から6までの数値(日曜=0、月曜=1・・・土曜=6)で返すメソッドgetDay()の値によって、switch構文で処理を分岐しています。
JavaScript
switch(today.getDay()) {
case 0;// 値0(日曜)を返す場合
document.write(“今日は日曜!寝てる?遊びに行く?”);
break;
case 6;// 値6(土曜)を返す場合
document.write(“明日は日曜日!計画は万全だよね?”);
break;
default://その他の値(平日)の場合
document.write(“お仕事がんばってください!”);
}