Sentença break e continue ECMAScript
- Página anterior Sentença break
- Próxima página Sentença com
As instruções break e continue fornecem um controle mais rigoroso sobre a execução do código dentro dos loops.
Diferenças entre break e continue
A instrução break sai imediatamente do loop, impedindo que qualquer código seja executado novamente.
A instrução continue apenas sai do loop atual, permitindo que a próxima iteração continue com base na expressão de controle.
Por exemplo:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { break; } iNum++; } alert(iNum); // Exibe "4"
No código acima, o loop for itera a variável i de 1 a 10. Dentro do corpo do loop, a instrução if verifica (usando o operador de módulo) se o valor de i pode ser dividido por 5. Se puder, executa a instrução break. O alert exibe "4", que é o número de vezes que o loop foi executado antes de sair.
Se substituirmos a instrução continue por uma instrução break neste exemplo, o resultado será diferente:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { continue; } iNum++; } alert(iNum); // Exibe "8"
Aqui, o alert exibirá "8", que é o número de vezes que o loop será executado. O total de loops possíveis pode ser 9, mas quando o valor de i for 5, a instrução continue será executada, saltando a expressão iNum++ e retornando ao início do loop.
Usar em conjunto com sentenças etiquetadas
As sentenças break e continue podem ser usadas em conjunto com sentenças etiquetadas para retornar a um local específico do código.
Normalmente, quando há loops internos dentro de loops, é feito assim, por exemplo:
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); // Saída "55"
No exemplo acima, a etiqueta outermost representa a primeira sentença for. Normalmente, cada sentença for executa 10 vezes o bloco de código, o que significa que iNum++ deve ser executado 100 vezes, resultando em iNum igual a 100 ao final. Aqui, a sentença break tem um parâmetro, que é a etiqueta do comando para onde o loop deve ser interrompido. Assim, a sentença break não pode apenas sair do loop for interno (usando a variável j), mas também do loop for externo (usando a variável i). Portanto, o valor final de iNum é 55, porque quando os valores de i e j são iguais a 5, o loop será interrompido.
Pode-se usar a sentença continue da mesma forma:
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); // Saída "95"
No exemplo acima, a sentença continue força a continuação do loop, não apenas o loop interno, mas também o loop externo. Quando j é igual a 5, isso significa que o loop interno reduzirá 5 iterações, resultando no valor de iNum igual a 95.
Dica:Pode-se ver que as sentenças etiquetadas usadas em conjunto com break e continue são muito poderosas, mas o uso excessivo pode trazer problemas para a depuração do código. Certifique-se de que as etiquetas usadas sejam descritivas e não haja muitas camadas de loops aninhados.
Dica:Para saber o que é uma sentença etiquetada, leia Sentença de Etiqueta ECMAScript Esta seção.
- Página anterior Sentença break
- Próxima página Sentença com