Cicli: for e while
Sommare a mano i numeri interi da 1 a 100 richiede un po' di tempo. Un ciclo for di tre righe lo fa subito e stampa 5050.
Fare la stessa cosa molte volte
Stampare i numeri da 1 a 5 con cinque righe di console.log va bene. Stampare così da 1 a 1000 no. Un ciclo esegue lo stesso blocco di codice più e più volte, cambiando un po' ogni volta, finché una condizione non dice di fermarsi. I cicli sono il punto in cui i computer si guadagnano il pane: non si annoiano mai e non perdono mai il conto.
Il ciclo for
for (let i = 1; i <= 5; i++) {
console.log(i);
}
// stampa 1, 2, 3, 4, 5 su righe separateLe parentesi dopo for contengono tre parti separate da punti e virgola. La prima, let i = 1, viene eseguita una volta prima che il ciclo inizi e crea una variabile contatore. La seconda, i <= 5, è la condizione, controllata prima di ogni giro; quando diventa false il ciclo finisce. La terza, i++, viene eseguita dopo ogni giro e fa avanzare il contatore. Un passaggio attraverso il blocco si chiama iterazione. Seguilo passo passo: i vale 1, la condizione è true, viene stampato 1, i diventa 2, e così via finché i diventa 6, la condizione è false e il programma continua dopo la graffa di chiusura.
Il contatore di solito si chiama i, una tradizione che viene dalla matematica, ma va bene qualsiasi nome. Puoi anche contare con passi diversi: for (let i = 10; i >= 0; i -= 2) conta all'indietro 10, 8, 6, 4, 2, 0.
Costruire un totale
Lo schema di ciclo più comune è l'accumulatore. Crea una variabile prima del ciclo, aggiornala dentro e usala dopo. Ecco la somma dell'introduzione:
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum); // 5050Fai attenzione a dove si trova ogni riga. Se let sum = 0 fosse dentro il ciclo, sum verrebbe azzerata a ogni iterazione. Se console.log fosse dentro, stamperebbe 100 totali parziali invece di una sola risposta. Ciò che sta prima e dopo il ciclo è importante quanto il ciclo stesso.
Il ciclo while
Un ciclo while ha solo una condizione. Continua a eseguire il suo blocco finché la condizione è true. Usalo quando non sai in anticipo quanti giri ti servono, per esempio per raddoppiare un numero finché non supera 1000.
let n = 1;
let steps = 0;
while (n <= 1000) {
n *= 2;
steps++;
}
console.log(n, steps); // 1024 10Qualcosa dentro un ciclo while deve prima o poi rendere false la condizione. Se dimentichi la riga che cambia n, la condizione resta true per sempre. Questo è un ciclo infinito, e la pagina si blocca. Se ti succede in un riquadro di esercizio, ricarica la pagina e correggi il codice. Nel ciclo for il passo di aggiornamento è scritto nell'intestazione, e questo rende l'errore più raro.
break e continue
Due parole chiave cambiano il flusso dentro un ciclo. break esce subito dal ciclo. continue salta il resto dell'iterazione corrente e passa alla successiva. Per esempio, un ciclo da 1 a 10 con if (i % 3 === 0) continue; all'inizio stampa tutti i numeri tranne 3, 6 e 9.
Esempio svolto. Quanti numeri da 1 a 50 sono multipli di 7? Comincia con let count = 0, fai variare i da 1 a 50 e dentro scrivi if (i % 7 === 0) count++;. Dopo il ciclo count vale 7: sono 7, 14, 21, 28, 35, 42 e 49.
for (inizio; condizione; aggiornamento) { corpo } for (let i = 1; i <= 5; i++)
| ciclo | Codice che esegue un blocco più e più volte |
| iterazione | Un passaggio attraverso il corpo del ciclo |
| contatore | La variabile che conta i giri, spesso i |
| accumulatore | Una variabile costruita dentro un ciclo, come sum |
| while | Ripete finché una condizione è true |
| ciclo infinito | Un ciclo la cui condizione non diventa mai false |
| break | Esci subito dal ciclo |
| continue | Passa all'iterazione successiva |
- Quante righe stampa?
for (let i = 0; i < 4; i++) { console.log(i); } - Qual è l'ultimo numero stampato?
for (let i = 0; i < 4; i++) { console.log(i); } - Che cosa stampa?
let total = 0; for (let i = 1; i <= 4; i++) { total += i; } console.log(total); - Che cosa stampa?
let p = 1; for (let i = 1; i <= 5; i++) { p *= 2; } console.log(p); - Che cosa stampa?
let n = 10; while (n > 3) { n -= 3; } console.log(n); - Quante righe stampa?
for (let i = 10; i >= 0; i -= 2) { console.log(i); } - Che cosa stampa?
for (let i = 1; i <= 10; i++) { if (i === 4) break; console.log(i); }- 1 2 3 on separate lines
- 1 to 10 except 4
- 1 2 3 4 on separate lines
- Quante righe stampa?
for (let i = 1; i <= 10; i++) { if (i % 2 === 0) continue; console.log(i); } - Che cosa c'è di sbagliato in questo ciclo?
let i = 0; while (i < 5) { console.log(i); }- Niente
- i non cambia mai, quindi non si ferma mai
- Non stampa niente
- Che cosa stampa?
let count = 0; for (let i = 1; i <= 50; i++) { if (i % 7 === 0) count++; } console.log(count);
- for (inizio; condizione; aggiornamento) { ... } ripete finché la condizione è true.
- Crea gli accumulatori prima del ciclo, aggiornali dentro, usali dopo.
- while (condizione) { ... } è adatto ai cicli con un numero di giri non noto.
- Qualcosa deve rendere false la condizione, altrimenti il ciclo non finisce mai.
- break esce dal ciclo; continue passa al giro successivo.
Fonti di questo corso (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Consultato il: 2026-10-17