Espressioni break e continue ECMAScript

Gli statement break e continue forniscono un controllo più rigoroso sull'esecuzione del codice all'interno dei cicli.

La differenza tra gli statement break e continue

Lo statement break esce immediatamente dal ciclo, impedendo di eseguire ulteriormente qualsiasi codice.

Lo statement continue esce solo dal ciclo corrente, permettendo di continuare con il ciclo successivo in base all'espressione di controllo.

Esempio:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	// Output: "4"

Nel codice sopra, il ciclo for itera il variabile i da 1 a 10. Nel corpo del ciclo, lo statement if verifica (usando l'operatore modulo) se il valore di i è divisibile per 5. Se lo è, viene eseguito lo statement break. L'alert mostra "4", che rappresenta il numero di volte che il ciclo viene eseguito prima di uscire.

Se si sostituisce lo statement continue a questo esempio di statement break, i risultati saranno diversi:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	// Output: "8"

Qui, l'alert mostrerà "8", che rappresenta il numero di volte che il ciclo viene eseguito. Il numero totale di cicli eseguiti potrebbe essere 9, ma quando il valore di i è 5, viene eseguito lo statement continue, il quale farà saltare l'espressione iNum++ e tornare all'inizio del ciclo.

Utilizzate insieme alle espressioni etichettate

Le espressioni break e continue possono essere utilizzate insieme alle espressioni etichettate per tornare a posizioni specifiche nel codice.

Di solito, quando ci sono loop all'interno di altri loop, si fa così, ad esempio:

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);	// Output: "55"

Nell'esempio sopra, l'etichetta outermost rappresenta la prima espressione for. Normalmente, ogni espressione for esegue 10 volte il blocco di codice, il che significa che iNum++ dovrebbe essere eseguito 100 volte, e al completamento, iNum dovrebbe essere uguale a 100. Questa espressione break ha un parametro, ovvero il tag della statement da saltare dopo la fine del ciclo. Di conseguenza, la statement break non può solo uscire dal ciclo for interno (cioè l'espressione con il variabile j), ma anche dal ciclo for esterno (cioè l'espressione con il variabile i). Pertanto, il valore finale di iNum è 55, perché quando i e j sono entrambi uguali a 5, il ciclo termina.

Puoi utilizzare la dichiarazione continue nello stesso modo:

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);	// Output: "95"

Nel esempio sopra, l'espressione continue costringe il ciclo a continuare, non solo il ciclo interno, ma anche il ciclo esterno. Quando j è uguale a 5, questo significa che il ciclo interno ridurrà 5 iterazioni, portando il valore di iNum a 95.

Suggerimento:Si può vedere che le dichiarazioni etichettate utilizzate insieme a break e continue sono molto potenti, ma un uso eccessivo può causare problemi di debug del codice. Assicurati che le etichette utilizzate siano descrittive e non avvengano troppi livelli di loop annidati.

Suggerimento:Vuoi sapere cos'è una dichiarazione etichettata? Leggi Espressioni di Etichetta ECMAScript Questa sezione.