edubun
Italiano

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 odd

else 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: C

L'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 { ... }

condizioneL'espressione booleana in if ( )
bloccoIstruzioni raggruppate fra { }
elseViene eseguito quando la condizione dell'if è false
else ifUn'altra condizione, controllata solo se quelle sopra erano false
ramoUno dei percorsi possibili attraverso un'istruzione if
annidamentoUn if dentro un altro if
ternariocond ? a : b sceglie uno fra due valori
rientroSpazi all'inizio delle righe dentro un blocco
  1. Che cosa stampa?
    const x = 5;
    if (x > 3) {
      console.log("big");
    } else {
      console.log("small");
    }
  2. Che cosa stampa?
    const x = 2;
    if (x > 3) {
      console.log("big");
    }
    console.log("end");
    • big, then end
    • Only end
    • Nothing
  3. Che cosa stampa?
    const t = 18;
    if (t >= 30) {
      console.log("hot");
    } else if (t >= 15) {
      console.log("mild");
    } else {
      console.log("cold");
    }
  4. Che cosa stampa?
    const s = 95;
    if (s >= 70) {
      console.log("C");
    } else if (s >= 90) {
      console.log("A");
    }
  5. In una catena if / else if / else, quanti blocchi vengono eseguiti al massimo?
  6. Che cosa stampa?
    const n = 10;
    console.log(n > 5 ? "yes" : "no");
  7. Che cosa stampa?
    const a = 4;
    const b = 9;
    if (a > 5 || b > 5) {
      console.log("one");
    } else {
      console.log("none");
    }
  8. Che cosa stampa?
    const a = 4;
    const b = 9;
    if (a > 5 && b > 5) {
      console.log("both");
    } else {
      console.log("not both");
    }
  9. Che cosa c'è di sbagliato in if (score = 100)?
    • Niente
    • Memorizza 100 invece di confrontare; usa ===
    • Serve un punto e virgola all'interno
  10. Che cosa stampa?
    let msg = "start";
    const n = 0;
    if (n) {
      msg = "nonzero";
    }
    console.log(msg);
Punti chiave
  • 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