Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 14 di 112
  • livello avanzato
Indice lezioni

I cicli for

Il ciclo for e le sue varianti: for-in e for-of, permettono di reiterare l'esecuzione di un blocco di codice fino al raggiungimento di un certo limite o scandendo gli elementi di un certo oggetto.
Il ciclo for e le sue varianti: for-in e for-of, permettono di reiterare l'esecuzione di un blocco di codice fino al raggiungimento di un certo limite o scandendo gli elementi di un certo oggetto.
Link copiato negli appunti

Una alternativa al while è l'istruzione for. Questa istruzione è generalmente intesa per l'esecuzione di un blocco di codice un numero determinato di volte, ma a ben vedere il for in JavaScript ha sostanzialmente la stessa semantica del while. Vediamo il suo schema sintattico:

for (inizializzazione; condizione; modifica) {
	// istruzioni
}

  • inizializzazione: JavaScript esegue l'istruzione specificata in inizializzazione prima di avviare le iterazioni (il ciclo).
  • condizione: è l'espressione booleana che viene valutata prima di eseguire ciascuna iterazione. Se è falsa non viene eseguito il blocco di istruzioni associato al for. Se invece la condizione è vera viene eseguito il blocco di codice.
  • modifica: al termine di ciascuna iterazione viene eseguita l'istruzione modifica (la più classica è l'incremento di un contatore). Il ciclo poi ricomincia con la valutazione della condizione.

Come per il while, anche in questo caso è nostra responsabilità fare in modo che la condizione cambi ad ogni passo per garantire l'uscita dal ciclo.

Vediamo come riprodurre l'esempio fatto per il while, utilizzando il costrutto for:

var y = 1;
var i;
for (i = 1; i <=4; i++) {
	y = y * i;
}

Abbiamo trasposto gli elementi del while all'interno dello schema sintattico del for.

Come abbiamo detto, il for è generalmente comodo per effettuare operazioni sugli array, ciclando tra gli elementi.

Vediamo un esempio in cui vengono sommati gli interi contenuti in un array:

var quantita = [12, 34, 45, 7, 19];
var totale = 0;
var i;
for (i = 0; i < 5; i++) {
	totale = totale + quantita[i];
}

Inizializzazioni multiple o vuote

L'istruzione for è molto flessibile, infatti possiamo inserire nelle sezioni inizializzazione e modifica anche gruppi di istruzioni separati da virgole. Ad esempio, possiamo riscrivere il codice dell'esempio precedente nel seguente modo:

var y;
var i;
for (i = 1, y = 1; i <=4; i++) {
	y = y * i;
}

In realtà nessuna sezione è obbligatoria. Possiamo quindi, ad esempio, scrivere il nostro ciclo in questo modo del tutto equivalente:

var y = 1;
var i = 1;
for (; i <=4; i++) {
	y = y * i;
}

fino ad arrivare ad una situazione del genere sintatticamente quasi identica al while:

var y = 1;
var i = 1;
for (; i <=4;) {
	y = y * i;
	i++;
}

for-in e for-of

Per lavorare più comodamente con gli array JavaScript prevede due varianti del for: il for...in e il for...of. Vediamo come come scrivere le istruzioni precedenti facendo uso del for...in:

var quantita = [12, 34, 45, 7, 19];
var totale = 0;
var indice;
for (indice in quantita) {
	totale = totale +  quantita[indice];
}

Sfruttando questa variante del for non abbiamo bisogno di specificare la lunghezza dell'array nè l'istruzione di modifica della condizione. JavaScript rileva che la variabile quantita è un array ed assegna ad ogni iterazione alla variabile indice il valore dell'indice corrente.

Utilizzando il for..of invece possiamo scrivere il ciclo in questo modo:

var quantita = [12, 34, 45, 7, 19];
var totale = 0;
var valore;
for (valore of quantita) {
	totale = totale +  valore;
}

Ad ogni iterazione JavaScript assegna alla variabile valore il contenuto di ciascun elemento dell'array.

Queste varianti del for ci consentono di scrivere meno codice quando lavoriamo con gli array. C'è da tenere presente, però, che il for...of fa parte delle specifiche di ECMAScript 6 e potrebbe non essere disponibile in engine JavaScript meno recenti.


Ti consigliamo anche