Sentencias break y continue ECMAScript
- Página anterior Sentencia break
- Página siguiente Sentencia with
Las declaraciones break y continue proporcionan un control más estricto sobre la ejecución del código dentro de los bucles.
Las diferencias entre las declaraciones break y continue
La declaración break sale inmediatamente del bucle, impidiendo que se ejecute nuevamente cualquier código.
La declaración continue solo sale del bucle actual, permitiendo continuar con el siguiente ciclo según la expresión de control.
Por ejemplo:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { break; } iNum++; } alert(iNum); // Sale "4"
En el código anterior, el bucle for itera sobre la variable i desde 1 hasta 10. Dentro del cuerpo del bucle, la declaración if verifica (usando el operador módulo) si el valor de i puede ser divisible por 5. Si puede, se ejecutará la declaración break. alert mostrará "4", que es la cantidad de veces que se ejecutó el bucle antes de salir.
Si se reemplaza la declaración continue en este ejemplo por la declaración break, los resultados serán diferentes:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { continue; } iNum++; } alert(iNum); // Sale "8"
Aquí, alert mostrará "8", que es la cantidad de veces que se ejecutará el bucle. El total posible de bucles que se pueden ejecutar es 9, pero cuando el valor de i es 5, se ejecutará la declaración continue, lo que hará que el bucle salte la expresión iNum++ y regrese al principio del bucle.
Usar junto con sentencias etiquetadas
Las sentencias break y continue pueden utilizarse conjuntamente con sentencias etiquetadas para regresar a posiciones específicas del código.
Generalmente, cuando hay bucles dentro de bucles, se hace así, por ejemplo:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { break outermost; } iNum++; } } alert(iNum); // Salida "55"
En el ejemplo anterior, la etiqueta outermost representa la primera sentencia for. Normalmente, cada sentencia for ejecuta 10 veces el bloque de código, lo que significa que iNum++ se ejecutará 100 veces en condiciones normales, y al completarse, iNum debería ser igual a 100. Aquí, la sentencia break tiene un parámetro, que es la etiqueta de la sentencia a la que se debe saltar después de detener el bucle. Por lo tanto, la sentencia break no solo puede salir del bucle for interno (es decir, la sentencia que utiliza la variable j), sino también del bucle for externo (es decir, la sentencia que utiliza la variable i). Por lo tanto, el valor final de iNum es 55, porque cuando i y j tienen el valor 5, el bucle se detendrá.
Se puede usar la sentencia continue de la misma manera:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { continue outermost; } iNum++; } } alert(iNum); // Salida "95"
En el ejemplo anterior, la sentencia continue obliga a que el bucle continúe, no solo el bucle interno, sino también el bucle externo. Cuando j es igual a 5, esto significa que el bucle interno reducirá 5 iteraciones, lo que hace que el valor de iNum sea 95.
Consejo:Se puede ver que las sentencias etiquetadas utilizadas conjuntamente con break y continue son muy potentes, pero el uso excesivo puede causar problemas en la depuración del código. Asegúrese de que las etiquetas utilizadas sean descriptivas y no nests muchas capas de bucles.
Consejo:Para entender qué es una sentencia etiquetada, lea Sentencias de etiqueta ECMAScript Esta sección.
- Página anterior Sentencia break
- Página siguiente Sentencia with