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