edubun
Italiano

Booleani e confronti

5 == "5" è true ma 5 === "5" è false. Il triplo uguale controlla anche che i due lati siano dello stesso tipo.

Domande con risposta sì o no

I programmi fanno domande di continuo. La password è abbastanza lunga? Il giocatore ha finito le vite? Oggi è fine settimana? Ognuna ha una di due risposte, e JavaScript le rappresenta con i due valori booleani, true e false. I booleani prendono il nome da George Boole, il matematico dell'Ottocento che elaborò un'algebra del vero e del falso. Da soli non sono molto emozionanti, ma sono ciò che permette a un programma di prendere decisioni, l'argomento della prossima unità.

Operatori di confronto

Un confronto prende due valori e produce un booleano. Qui sotto trovi i sei che userai di più. Nota che «uguale» si scrive con tre segni di uguale, perché un solo = significa già «memorizza un valore».

OperatoreDomandaEsempioRisultato
===uguale?4 === 4true
!==diverso?4 !== 4false
<minore?3 < 8true
>maggiore?3 > 8false
<=minore o uguale?8 <= 8true
>=maggiore o uguale?7 >= 8false

Come l'aritmetica, un confronto è un'espressione, quindi puoi stamparlo o salvarlo in una variabile: const isAdult = age >= 18; mette true o false in isAdult a seconda dell'età. I nomi delle variabili booleane spesso iniziano con is, has o can, così il codice si legge come una domanda.

Perché === e non ==

JavaScript ha anche il doppio uguale, ==, chiamato uguaglianza debole. Prima di confrontare cerca di convertire i due lati nello stesso tipo, e questo dà risultati difficili da prevedere: 5 == "5" è true, e lo è anche 0 == "". Il triplo uguale ===, l'uguaglianza stretta, non converte mai. Se i tipi sono diversi, la risposta è semplicemente false. MDN e la maggior parte delle guide di stile consigliano === e !== per il codice di tutti i giorni, e questo corso li usa sempre.

console.log(5 === 5);      // true
console.log(5 === "5");    // false
// uguaglianza debole, meglio evitarla:
console.log(5 == "5");     // true
console.log("cat" !== "dog"); // true

Si possono confrontare anche le stringhe. === controlla che due stringhe abbiano esattamente gli stessi caratteri, maiuscole comprese, quindi "Yes" === "yes" è false. Gli operatori < e > confrontano le stringhe carattere per carattere usando i loro codici, il che per le parole in minuscolo è vicino all'ordine del dizionario: "apple" < "banana" è true. In quest'ordine le lettere maiuscole vengono prima di tutte le minuscole, quindi anche "Zebra" < "apple" è true.

Combinare le risposte con &&, || e !

Le domande vere hanno spesso più parti. Una giostra può richiedere un'altezza di almeno 120 cm e un'età di almeno 8 anni. JavaScript unisce le risposte booleane con gli operatori logici. && (and, «e») è true solo quando entrambi i lati sono true. || (or, «o») è true quando almeno un lato è true. ! (not, «non») inverte un booleano, quindi !true è false.

const height = 130;
const age = 7;
console.log(height >= 120 && age >= 8);   // false
console.log(height >= 120 || age >= 8);   // true
console.log(!(age >= 8));                 // true

Esempio svolto. Un giorno è nel fine settimana? day === "Sat" || day === "Sun". Nota che devi ripetere day === da entrambi i lati. Scrivere day === "Sat" || "Sun" sembra naturale in inglese ma non fa ciò che intendi, perché "Sun" da solo non è un confronto. I confronti vengono calcolati prima di && e ||, quindi height >= 120 && age >= 8 non ha bisogno di altre parentesi, anche se aggiungerle non fa mai male.

Un'altra idea che incontrerai più avanti: quando JavaScript ha bisogno di un booleano ma riceve un altro valore, tratta alcuni valori come false. Questi valori falsy sono false, 0, la stringa vuota "", null, undefined e NaN. Tutto il resto, comprese le stringhe "0" e "false", conta come true.

and && richiede che entrambi siano veri. or || ne richiede uno vero. not ! inverte la risposta.

booleantrue o false
===Uguaglianza stretta: stesso valore e stesso tipo
!==Disuguaglianza stretta: non sono uguali
==Uguaglianza debole: prima converte i tipi (da evitare)
&&and: true solo se entrambi i lati sono true
||or: true se almeno un lato è true
!not: scambia true e false
falsyfalse, 0, "", null, undefined e NaN
  1. Che cosa stampa?
    console.log(7 > 7);
    • true
    • false
  2. Che cosa stampa?
    console.log(7 >= 7);
    • true
    • false
  3. Che cosa stampa?
    console.log(3 === "3");
    • true
    • false
  4. Che cosa stampa?
    console.log(3 == "3");
    • true
    • false
  5. Che cosa stampa?
    console.log(true && false);
    • true
    • false
  6. Che cosa stampa?
    console.log(true || false);
    • true
    • false
  7. Che cosa stampa?
    const x = 12;
    console.log(x > 10 && x < 20);
    • true
    • false
  8. Che cosa stampa?
    console.log(!(5 > 2));
    • true
    • false
  9. Che cosa stampa?
    console.log("Yes" === "yes");
    • true
    • false
  10. Che cosa stampa?
    console.log("apple" < "banana");
    • true
    • false
  11. Quale valore è falsy?
    • "0"
    • 0
    • "false"
  12. Quale controlla correttamente che day sia "Sat" o "Sun"?
    • day === "Sat" || "Sun"
    • day === "Sat" || day === "Sun"
    • day === "Sat" && day === "Sun"
Punti chiave
  • I confronti producono true o false.
  • Usa === e !==; == converte i tipi e sorprende le persone.
  • && li richiede entrambi, || ne richiede uno, ! inverte.
  • Ripeti il confronto completo su ogni lato di || e &&.
  • Valori falsy: false, 0, "", null, undefined, NaN.
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