2012-06-30 8 views
11

MDN states:Uso de continuar en un bucle do-while

Cuando se utiliza continue sin una etiqueta, termina la iteración actual de la más interior que encierra while, do-while o for declaración y continúa la ejecución del bucle con el siguiente iteración.

No estoy seguro de por qué el siguiente fragmento de código no funciona como esperaba.

do { 
    continue; 
} while(false); 

A pesar de que la condición es whilefalse, espero que se ejecute siempre desde continue salta hacia el comienzo del bloque, que se ejecuta inmediatamente continue otra vez, etc. Sin embargo De alguna manera, el bucle termina después de una iteración. Parece que continue se ignora.

¿Cómo funciona continue en un lazo do-while?

+1

La condición que se cumple es implícita. Si la condición no se cumple, no hay próxima iteración. –

+1

Me perdí eso. Supongo que fui engañado por el orden del código fuente. (Pensé que 'continuar' siempre saltaba hacia arriba en el código fuente.) – pimvdb

+1

Parece * de esa manera, especialmente si usa una etiqueta de declaración. 'TOP: do {continue TOP; } while (false) ' –

Respuesta

7

Control hacia fuera este jsFiddle: http://jsfiddle.net/YdpJ2/3/

var getFalse = function() { 
    alert("Called getFalse!"); 
    return false; 
}; 

do { 
    continue; 
    alert("Past the continue? That's impossible."); 
} while(getFalse());​ 

Parece golpear la siguen, a continuación, salir de esa iteración para ejecutar la comprobación de condición. Como la condición es falsa, termina.

2

Después de continuar, se evalúa el bucle condicional, ya que es falso, el bucle terminará.

4

Continuar detiene la ejecución del resto del código en el bloque y salta directamente a la siguiente iteración de su ciclo.

Ya que haces while(false) no hay siguiente iteración

6

continue no omitir la comprobación while(false) sino simplemente ignora el resto del código dentro de los corchetes.

4

continue no comienza de nuevo la iteración actual, sino que salta a la siguiente (como se dice en la cita de MDN).

debido a una condición false, no hay una próxima iteración, por lo que se completa todo el ciclo.

1

espero que se ejecute siempre ya seguir saltos hacia el inicio de el bloque

El continue no salta al inicio del bloque, salta al final del bloque.

Cuestiones relacionadas