Точно так же, как Perl,
loop1:
for (var i in set1) {
loop2:
for (var j in set2) {
loop3:
for (var k in set3) {
break loop2; // breaks out of loop3 and loop2
}
}
}
, как определено в разделе EMCA-262 12.12. [Документы MDN]
В отличие от C, эти маркировки могут только использоваться для continue
и break
, поскольку JavaScript не имеет goto
.
Оберните это в функции и затем всего return
.
var str = "";
for (var x = 0; x < 3; x++) {
(function() { // here's an anonymous function
for (var y = 0; y < 3; y++) {
for (var z = 0; z < 3; z++) {
// you have access to 'x' because of closures
str += "x=" + x + " y=" + y + " z=" + z + "<br />";
if (x == z && z == 2) {
return;
}
}
}
})(); // here, you execute your anonymous function
}
, Как это? :)
Я немного опаздываю стороне, но следующее является агностическим языком подходом, который не использует GOTO/labels или функциональное обертывание:
for (var x = Set1.length; x > 0; x--)
{
for (var y = Set2.length; y > 0; y--)
{
for (var z = Set3.length; z > 0; z--)
{
z = y = -1; // terminates second loop
// z = y = x = -1; // terminate first loop
}
}
}
На позитивном аспекте это течет естественно, который должен понравиться толпе non-GOTO. На оборотной стороне внутренний цикл должен завершить текущее повторение прежде, чем завершиться так, это не могло бы быть применимо в некоторых сценариях.
quite simple
var a=[1,2,3];
var b=[4,5,6];
var breakCheck1=false;
for (var i in a){
for (var j in b){
breakCheck1=true;
break;
}
if (breakCheck1) {break;}
}