ループの中にループがあるような多重ループを抜ける場合には、C言語ならgotoを使ったり、PHPなら数値指定付きのbreakを使ったり(『多重ループを抜ける[PHP]』参照。)と特殊な方法を使うことがある。
JavaScriptでは、goto文もbreak文で数値を指定することもできないが、Javaと同じようにラベル指定付きのbreak文を使うことができる。
例えば、以下のように変数を使って2回breakしているコードがあるとする。
var break_flag = false; //多重ループから抜けるためのフラグ for(var i=0; i<5; i++){ for(var j=0; j<5; j++){ document.writeln("("+i+", "+j+")"); if(i == 2 && j == 4){ break_flag = true; break; } } if(break_flag) break; }
このコードは以下のように書くことができる。
L: for(var i=0; i<5; i++){ for(var j=0; j<5; j++){ document.writeln("("+i+", "+j+")"); if(i == 2 && j == 4) break L; } }
breakでラベルが指定できるように、continue文でもラベルを指定することができる。
L: for(var i=0; i<5; i++){ for(var j=0; j<5; j++){ document.writeln("("+i+", "+j+")"); if(j == 2) continue L; } }
このコードを実行すると以下のようになる。
(0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2) (3, 0) (3, 1) (3, 2) (4, 0) (4, 1) (4, 2)