入れ子(ネスト)で多階層にしたdo-while文において、複数の階層のループ(繰り返し)をスキップさせたいときは、continueの引数に、ラベルを指定する。
ラベルを指定しない場合、continue文がある階層のループ(繰り返し)の次の処理へ移る。
構文
ラベル指定あり
continue ラベル;
指定したラベルがある階層のひとつ下の階層のループ(繰り返し)の次の処理へ移る。
do {
条件式Aが「TRUE」の間、繰り返し行う処理
ラベル:
do {
条件式Bが「TRUE」の間、繰り返し行う処理
do {
条件式Cが「TRUE」の間、繰り返し行う処理
continue ラベル; // 残りの処理をスキップし、条件式Bのループ(繰り返し)の次の処理へ移る
} while ( 条件式C );
} while ( 条件式B );
} while ( 条件式A );
条件式Aが「TRUE」の間、繰り返し行う処理
ラベル:
do {
条件式Bが「TRUE」の間、繰り返し行う処理
do {
条件式Cが「TRUE」の間、繰り返し行う処理
continue ラベル; // 残りの処理をスキップし、条件式Bのループ(繰り返し)の次の処理へ移る
} while ( 条件式C );
} while ( 条件式B );
} while ( 条件式A );
ラベル指定なし
continue;
continue文がある階層のループ(繰り返し)の次の処理へ移る。
do {
条件式Aが「TRUE」の間、繰り返し行う処理
do {
条件式Bが「TRUE」の間、繰り返し行う処理
do {
条件式Cが「TRUE」の間、繰り返し行う処理
continue; // 残りの処理をスキップし、条件式Cのループ(繰り返し)の次の処理へ移る
} while ( 条件式C );
} while ( 条件式B );
} while ( 条件式A );
条件式Aが「TRUE」の間、繰り返し行う処理
do {
条件式Bが「TRUE」の間、繰り返し行う処理
do {
条件式Cが「TRUE」の間、繰り返し行う処理
continue; // 残りの処理をスキップし、条件式Cのループ(繰り返し)の次の処理へ移る
} while ( 条件式C );
} while ( 条件式B );
} while ( 条件式A );
サンプル
<script type="text/javascript">
var varA = 1;
do {
document . write( '<p>varA: ' );
document . write( varA++ );
document . write( '</p>' );
var varB = 1;
labelA:
do {
document . write( '<p> varB: ' );
document . write( varB++ );
document . write( '</p>' );
document . write( '<p> varC: ' );
var varC = 1;
do {
document . write( varC++ + ',' );
if ( varC > 2 ) {
document . write( '</p>' );
continue labelA;
}
} while ( varC < varB );
document . write( '</p>' );
} while ( varB < varA );
} while ( varA <= 5 );
</script>
var varA = 1;
do {
document . write( '<p>varA: ' );
document . write( varA++ );
document . write( '</p>' );
var varB = 1;
labelA:
do {
document . write( '<p> varB: ' );
document . write( varB++ );
document . write( '</p>' );
document . write( '<p> varC: ' );
var varC = 1;
do {
document . write( varC++ + ',' );
if ( varC > 2 ) {
document . write( '</p>' );
continue labelA;
}
} while ( varC < varB );
document . write( '</p>' );
} while ( varB < varA );
} while ( varA <= 5 );
</script>
↓↓↓出力結果↓↓↓