JavaScript — Condizioni e Cicli

if/else · switch · ternario · for · while · for-of · for-in · 2026 · Marco Consiglio
Volta Institute · Napoli
A.A. 2026
🔀 if / else — la decisione più basilare
L'istruzione if esegue un blocco di codice solo se una condizione è vera (truthy); else definisce cosa fare quando non lo è.
const voto = 17; if (voto >= 18) { console.log('Promosso'); } else { console.log('Non ammesso'); } // → Non ammesso (17 non è >= 18)
💡 Ricorda dalla guida sui tipi di dato: if valuta l'espressione come booleana automaticamente — anche if (variabile) senza confronto esplicito funziona, testando se il valore è truthy o falsy.
🔗 else if — più condizioni in sequenza
const voto = 25; if (voto >= 28) { console.log('Ottimo'); } else if (voto >= 24) { console.log('Buono'); } else if (voto >= 18) { console.log('Sufficiente'); } else { console.log('Non ammesso'); } // → Buono (25 >= 24, ma non >= 28)
⚠️ JavaScript valuta le condizioni in ordine, dall'alto, e si ferma alla prima che risulta vera — anche se voto=25 soddisferebbe anche "voto >= 18", il programma si ferma già a "Buono" perché è la prima condizione vera incontrata.
🎚️ switch — quando confronti un solo valore con tante opzioni
switch è un'alternativa a una lunga catena di else if, utile quando confronti sempre la stessa variabile con valori diversi.
const giorno = 3; let nomeGiorno; switch (giorno) { case 1: nomeGiorno = 'Lunedì'; break; case 2: nomeGiorno = 'Martedì'; break; case 3: nomeGiorno = 'Mercoledì'; break; default: nomeGiorno = 'Giorno sconosciuto'; } console.log(nomeGiorno); // → Mercoledì
⚠️ Non dimenticare mai break! Senza break, JavaScript continua ad eseguire anche i case successivi (comportamento chiamato "fall-through") — un bug molto comune per chi inizia con switch.
❓ Operatore ternario — un if/else in una sola riga
const età = 20; // Sintassi: condizione ? valoreSeVero : valoreSeFalso const messaggio = età >= 18 ? 'Maggiorenne' : 'Minorenne'; console.log(messaggio); // → Maggiorenne // Equivalente a scrivere: let messaggio2; if (età >= 18) { messaggio2 = 'Maggiorenne'; } else { messaggio2 = 'Minorenne'; }
✅ Il ternario è perfetto per assegnazioni condizionali brevi e dirette in una sola riga — ma per logiche con più di 2 esiti, un if/else classico resta più leggibile.
🔁 for — il ciclo classico con contatore
Il ciclo for è ideale quando sai (o puoi calcolare) esattamente quante volte deve ripetersi il blocco di codice.
for (let i = 0; i < 5; i++) { console.log(`Iterazione numero ${i}`); } // → Iterazione numero 0, 1, 2, 3, 4 (5 iterazioni totali, da 0 a 4)
💡 Le tre parti del for sono sempre: inizializzazione (let i=0), condizione (i<5, il ciclo continua finché è vera) e incremento (i++, eseguito ad ogni giro). Dimenticare l'incremento crea un ciclo infinito!
🔄 while — ripeti finché una condizione è vera
let energia = 100; while (energia > 0) { energia -= 25; console.log(`Energia rimasta: ${energia}`); } // → 75, 50, 25, 0
⚠️ Con while, sei tu responsabile di modificare la variabile controllata dentro il ciclo (qui energia -= 25) — se te ne dimentichi, la condizione resta sempre vera e ottieni un ciclo infinito che blocca il programma.
📋 for...of — iterare sui VALORI di un array
const corsi = ['HTML', 'CSS', 'JavaScript']; for (const corso of corsi) { console.log(corso); } // → HTML, CSS, JavaScript (direttamente i VALORI, non gli indici)
💡 for...of è il modo più moderno e leggibile per scorrere array (e anche Set, Map, stringhe) quando ti servono i VALORI e non hai bisogno dell'indice numerico.
🔑 for...in — iterare sulle CHIAVI di un oggetto
const studente = { nome: 'Marco', corso: 'Full Stack', voto: 28 }; for (const chiave in studente) { console.log(`${chiave}: ${studente[chiave]}`); } // → nome: Marco // → corso: Full Stack // → voto: 28
⚠️ Il tranello più comune: for...of è per Array (valori), for...in è per Object (chiavi) — usarli al contrario produce risultati inattesi: for...in su un array restituisce gli INDICI come stringhe ('0','1','2'), non i valori.
⏹️ break — interrompere un ciclo prima del previsto
const numeri = [4, 8, 15, 16, 23, 42]; for (const n of numeri) { if (n > 15) { break; // esce IMMEDIATAMENTE dal ciclo, ignorando i restanti elementi } console.log(n); } // → 4, 8, 15 (si ferma appena trova 16, che è > 15)
✅ Utile per ricerche: appena trovi ciò che cerchi in un array grande, break evita di continuare a scorrere inutilmente il resto.
⏭️ continue — saltare solo l'iterazione corrente
const numeri = [1, 2, 3, 4, 5, 6]; for (const n of numeri) { if (n % 2 !== 0) { continue; // salta il resto SOLO per questa iterazione, il ciclo prosegue } console.log(n); } // → 2, 4, 6 (salta i dispari, ma continua fino alla fine dell'array)
💡 break vs continue: break esce completamente dal ciclo (non si processano più elementi successivi), continue salta solo l'iterazione corrente e passa alla successiva — il ciclo prosegue normalmente.
🧪 Playground — prova condizioni e cicli dal vivo
Editor JS
// il risultato apparirà qui