制御構文(Control Flow Statements)
制御構文(Control Flow Statements)は、あらかじめ用意されている制御構造で、プログラムの流れをコントロールする目的で用いる文(Statements)です。
JavaScriptの制御構文には、デバグ、条件分岐、繰り返し、繰り返し制御、呼び出し元へ返すがあります。
繰り返し
- do{...}while();
- 繰り返し、条件によって出る
- for(){...}
- 定義数の繰り返し
- for( propaties in object ){...}
- 繰り返し、オブジェクトのプロパティ数が条件
- for( values of array ){...}
- 繰り返し、配列数が条件
- while(){...}
- 繰り返し、条件によって出る
- continue;
- 以降のコードを飛ばして繰り返しに戻る
条件分岐
- if(){...}(else if)else{...}
- 条件分岐
- switch(){case : break; ... default: ... ;}
- 条件分岐
- break;
- 繰り返しや条件分岐処理から出る
割り込み処理
- try{...}catch(){...}(finally{...})
- 割り込みエラー制御
- throw
- 割り込みエラー制御で任意の処理ができる
デバグ
- debugger;
- デバグで用いる
関数
- return();
- 呼び出し元に戻り値を返す
繰り返し
do{...}while();
do whileは、条件によって終了する繰り返しステートメントです。繰り返し回数が決まっていない場合に使います。
繰り返しコードが実行されてから評価します。そのために、必ず1回以上はdo{...}内のコードが実行されます。
var tst_txt;
var i = 0;
do {
tst_txt += "<br />number:" + i;
i++;
}
while (i < 12);
for(){...}
forは、定数回の繰り返しステートメントです。繰り返し回数が分かっている場合に使います。
var tst_txt;
var i;
for( i = 0; i < 12 ; i++ ){
tst_txt += "<br />number:" + i;
}
for( propaties in Object ){...}
for inステートメントはオブジェクトのプロパティ数分だけ繰り返します。都度取得できる値はプロパティ番号です。プロパティの値やプロパティ名を取得するのに利用します。
var snfrn_city = {cityName:"San Francisco", population:85.3, color:"blue"}
for( i in snfrn_city ){
tst_txt += snfrn_city[i] + " "; // tst_txt value is 'San Francisco 85.3 blue'
}
for( values of array ){...}
for ofステートメントは配列数分だけ繰り返します。都度取得できる値は、配列の値です。
var city = ["San Francisco", "New York", "Tokyo"];
for( i of snfrn_city ){
tst_txt += i + " "; // "San Francisco" "New York" "Tokyo"
}
continue;
continue ステートメントは、それ以降のコードを飛ばして繰り返しに戻るための構文です。
for (i = 0; i < 12; i++) {
if (i === 5 || i === 10 ) {
...
continue; // 繰り返しに戻る
}
...
}
例えば以下のような else といった条件分岐を設ける必要がなくなり、見た目がスッキリします。
for (i = 0; i < 12; i++) {
if (i === 5 || i === 10 ) {
...
continue; // 繰り返しに戻るため else ブロックが必要なくなる
} else {
...
}
}
条件分岐
if(){...}(else if)else{...}
ifステートメントは、条件分岐です。条件を評価してtrueなら実行されifステートメントの処理は終了します。
最後にelseステートメントによって、条件に該当しなかった場合の処理が行われます。
if ( i < 12 ) {
...
} else if ( i < 18 ) { // 先の条件が評価されるのでi >= 12 && i < 18と評価される
...
} else {
...
}
switch(){case : break; ... default: ... ;}
switchステートメントは、ケースごとの条件よって分岐処理します。複数の条件を一覧にできます。
breakステートメントでswitchステートメント処理から抜けることができます。もしなければ、switchステートメントの条件分岐処理を続けます。
最後のdeafultによって条件に該当しなかった場合の処理が行われます。
switch(expression) {
case n:
...;
break;
case n:
...;
break;
default:
...;
}
while(){...}
whileは、条件によって終了する繰り返しステートメントです。繰り返し回数が決まっていない場合に使います。
評価が先のために{...}内のコードが実行されないこともあります。
var tst_txt;
var i = 0;
while(i < 12){
tst_txt += "<br />number:" + i;
i++;
}
break;
break ステートメントは、switch といった分岐処理や、for、 while などの繰り返し処理から出るための構文です。
for (i = 0; i < 12; i++) {
if (i === 6)
break;
}
...
}
目的の条件が見つかったらそれ以降の繰り返しが必要がない場合に有効なステートメントです。
割り込み処理
try{...}catch(error){...}(finally{...})
tryステートメントによって、割り込み処理を行うことができます。
try以下に通常のコードを編集し、そのコードにエラーが発生するとcatch以下のコードが実行されます。
詳しくは例外処理 try ~ catch
ページを参照してください
throw;
throwステートメントは、割り込み処理tryステートメントで利用します。
割り込み処理のtryステートメントでエラーが起こると、処理を停止しエラーメッセージを表示するだけですが、throwステートメントによって処理を任意に編集することができます。
デバグ
debugger;
debugger ステートメントは、デバグのためのブレイクポイントとして利用できます。
debugger ステートメントで、JavaScript の実行を停止し、可能ならブラウザのデバグ機能を呼び出します。
デバグを使用できない場合は debugger ステートメントは機能しません。
debugger;
関数
return;
returnステートメントによって、関数の呼び出し元に戻り値を返します。JavaScriptではreturnステートメントがない場合は戻り値がない、プロシージャとして動作します。
return( re_ );
