surrounding - Break for loop desde el interior de la caja del interruptor en Javascript
illegal continue statement: no surrounding iteration statement (7)
Desafortunadamente, Javascript no tiene permitido atravesar múltiples niveles. La forma más sencilla de hacer esto es aprovechar el poder de la declaración de return
mediante la creación de una función anónima:
//code before
(function () {
for (var a in b) {
switch (something) {
case something:
{
//code inside
return;
}
}
}
}());
//code after
Esto funciona porque el return
deja la función y, por lo tanto, deja el bucle implícitamente, moviéndolo directamente al code after
Qué comando debo usar, para salir del bucle for, también desde //code inside
saltar directamente a //code after
//code before
for(var a in b)
{
switch(something)
{
case something:
{
//code inside
break;
}
}
}
//code after
Puedes usar la label
. Tener una declaración etiquetada y romper con esa etiqueta. outerLoop
es la etiqueta que he usado aquí.
//code before
outerLoop:
for (var a in b) {
switch (something) {
case ''case1'':
//code inside
break outerLoop;
}
}
//code after
Siempre me parece que el uso de sentencias condicionales es una de las formas más fáciles de controlar el flujo de código, al menos conceptualmente.
var done = false;
//code before for loop
for(var a in b){
switch(switchParameter){
case firstCase:
//code inside
done = true;
break;
}
}
if(done)
break;
}
//code outside of for loop
Usted puede decir qué bucle / interruptor para romper.
function foo ()
{
dance:
for(var k = 0; k < 4; k++){
for(var m = 0; m < 4; m++){
if(m == 2){
break dance;
}
}
}
}
Ver esta respuesta
depende de lo que quieras lograr ... una cosa que comúnmente hago es algo como esto:
//code before
for(var a in b)
{
var breakFor = false;
switch(something)
{
case something:
{
//code inside
breakFor = true;
break;
}
}
if (breakFor)
break;
}
//code after
use otra variable para marcar cuando necesite salir:
var b = { firstName: ''Peter'', lastName: ''Smith'' };
var keepGoing = true;
for (var a in b) {
switch (true) {
case 1:
keepGoing = false;
break;
}
if (!keepGoing) break;
console.log(''switch end'');
}
console.log(''for end'');
for(var i=0; i<b.length; i++) {
switch (something) {
case ''something1'':
i=b.length;
}
}
Cuando la variable de iteración i
llega al final del bucle, se rompe. Pero uno puede forzar la variable de iteración para llegar al final del bucle.