Prendere decisioni con if ed else
Un'istruzione if esegue un blocco di codice solo quando la sua condizione è true. Con else if, JavaScript controlla le condizioni dall'alto e si ferma alla prima che è true.
Eseguire codice solo a volte
Finora ogni programma ha eseguito ogni riga, ogni volta. I programmi utili si comportano in modo diverso a seconda della situazione: un gioco mostra "You win" solo quando il punteggio è abbastanza alto, e un negozio aggiunge le spese di consegna solo quando l'ordine è piccolo. L'istruzione if è il modo in cui JavaScript sceglie.
const temperature = 31;
if (temperature >= 30) {
console.log("Hot day. Drink water.");
}
console.log("Done");La condizione va tra parentesi dopo la parola if. È una qualsiasi espressione che produce un booleano, di solito un confronto come quelli dell'unità precedente. Il codice da eseguire quando è true va dentro le parentesi graffe, che formano un blocco. Se la condizione è false, JavaScript salta l'intero blocco e continua dopo la graffa di chiusura. Sopra, vengono stampate entrambe le righe. Cambia temperature in 20 e viene stampato solo "Done". Le righe dentro il blocco sono rientrate di due spazi. A JavaScript il rientro non serve, ma mostra a colpo d'occhio quali righe appartengono all'if, e ogni programmatore esperto se lo aspetta.
else: l'altra strada
Spesso vuoi fare una cosa quando la condizione è true e un'altra quando è false. Aggiungi un blocco else. Viene eseguito esattamente uno dei due blocchi, mai entrambi e mai nessuno.
const n = 7;
if (n % 2 === 0) {
console.log(n + " is even");
} else {
console.log(n + " is odd");
}
// stampa: 7 is oddelse if: più di due scelte
Quando le possibilità sono diverse, concatena le condizioni con else if. JavaScript le prova dall'alto. Appena una è true esegue quel blocco e salta tutti gli altri, anche se le condizioni successive sarebbero vere. L'else finale raccoglie tutto ciò che non corrispondeva a nessuna delle condizioni precedenti.
const score = 72;
if (score >= 90) {
console.log("A");
} else if (score >= 80) {
console.log("B");
} else if (score >= 70) {
console.log("C");
} else {
console.log("F");
}
// stampa: CL'ordine delle condizioni conta. Con un punteggio di 95, il primo test è già true e viene stampato A. Se i test fossero scritti al contrario, partendo da score >= 70, un punteggio di 95 si fermerebbe al primo test e stamperebbe C. Quando gli intervalli si sovrappongono così, metti per prima la condizione più stretta. Seguire il codice a mano è una buona abitudine: scegli un valore, leggi dall'alto e di' ad alta voce quale ramo prende.
Annidare e combinare
Un blocco può contenere un'altra istruzione if, e questo si chiama annidamento. Spesso puoi evitare annidamenti profondi combinando le condizioni con && e || dell'unità precedente. Questi due pezzi di codice fanno lo stesso lavoro, e il secondo è più facile da leggere:
if (age >= 8) {
if (height >= 120) {
console.log("You can ride");
}
}
if (age >= 8 && height >= 120) {
console.log("You can ride");
}L'operatore condizionale
Quando devi solo scegliere fra due valori, c'è una forma compatta chiamata operatore condizionale (ternario): condition ? valueIfTrue : valueIfFalse. Per esempio, const label = n % 2 === 0 ? "even" : "odd";. Usalo per scelte brevi fra valori. Per tutto ciò che esegue più istruzioni, un normale if con else è più chiaro.
Un errore frequente è scrivere un solo segno di uguale nella condizione: if (score = 100). Così si memorizza 100 in score invece di confrontare, e il blocco viene eseguito ogni volta. Confronta sempre con ===.
if (condizione) { ... } else if (altra condizione) { ... } else { ... }
| condizione | L'espressione booleana in if ( ) |
| blocco | Istruzioni raggruppate fra { } |
| else | Viene eseguito quando la condizione dell'if è false |
| else if | Un'altra condizione, controllata solo se quelle sopra erano false |
| ramo | Uno dei percorsi possibili attraverso un'istruzione if |
| annidamento | Un if dentro un altro if |
| ternario | cond ? a : b sceglie uno fra due valori |
| rientro | Spazi all'inizio delle righe dentro un blocco |
- Che cosa stampa?
const x = 5; if (x > 3) { console.log("big"); } else { console.log("small"); } - Che cosa stampa?
const x = 2; if (x > 3) { console.log("big"); } console.log("end");- big, then end
- Only end
- Nothing
- Che cosa stampa?
const t = 18; if (t >= 30) { console.log("hot"); } else if (t >= 15) { console.log("mild"); } else { console.log("cold"); } - Che cosa stampa?
const s = 95; if (s >= 70) { console.log("C"); } else if (s >= 90) { console.log("A"); } - In una catena if / else if / else, quanti blocchi vengono eseguiti al massimo?
- Che cosa stampa?
const n = 10; console.log(n > 5 ? "yes" : "no"); - Che cosa stampa?
const a = 4; const b = 9; if (a > 5 || b > 5) { console.log("one"); } else { console.log("none"); } - Che cosa stampa?
const a = 4; const b = 9; if (a > 5 && b > 5) { console.log("both"); } else { console.log("not both"); } - Che cosa c'è di sbagliato in
if (score = 100)?- Niente
- Memorizza 100 invece di confrontare; usa ===
- Serve un punto e virgola all'interno
- Che cosa stampa?
let msg = "start"; const n = 0; if (n) { msg = "nonzero"; } console.log(msg);
- if (condizione) { ... } esegue il blocco solo quando la condizione è true.
- else viene eseguito quando è false; viene eseguito esattamente uno dei due.
- Le catene di else if si controllano dall'alto; vince la prima condizione true.
- Quando gli intervalli si sovrappongono, metti per prima la condizione più stretta.
- Confronta con ===, mai con un solo =.
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