Skip to Content
Le documentazioni sono in costruzione, puoi utilizzare la navigazione sulla sinistra come roadmap per monitorare i tuoi progressi. Grazie!
05 Tipi Di DatoTruthiness e Falsiness

Truthiness e Falsiness

In JavaScript, truthiness e falsiness descrivono il modo in cui un valore viene interpretato come true o false quando viene usato in un contesto booleano, come:

  • condizioni if
  • cicli while
  • operatori logici (&&, ||, !)

Anche se un valore non è di tipo Boolean, JavaScript può convertirlo automaticamente in true o false. Questo meccanismo si chiama coercizione booleana.


Valori Falsy

Esistono solo 7 valori falsy in JavaScript. Tutti gli altri sono truthy.

ValoreDescrizione
falsebooleano falso
0numero zero
-0zero negativo
0nBigInt zero
""stringa vuota
nullassenza intenzionale di valore
undefinedvalore non definito
NaNrisultato numerico non valido

Esempio

if (0) { console.log("vero"); } else { console.log("falso"); // viene eseguito }

Valori Truthy

Tutti gli altri valori sono truthy, anche se sembrano “falsi” a prima vista.

Alcuni esempi truthy:

true "0" "false" [] {} function() {} -1 Infinity
if ("false") { console.log("vero"); // viene eseguito }

Come funziona la coercizione booleana

Quando JavaScript valuta una condizione, applica internamente:

Boolean(valore);

Esempi

Boolean(""); // false Boolean("test"); // true Boolean(0); // false Boolean(42); // true Boolean(null); // false Boolean([]); // true

Operatori logici e truthiness

Gli operatori && e || non restituiscono sempre un booleano, ma l’ultimo valore valutato.

Operatore AND (&&)

Restituisce il primo valore falsy, oppure l’ultimo se tutti sono truthy.

"a" && "b" && 0 && "c"; // 0 "a" && "b" && "c"; // "c"

Operatore OR (||)

Restituisce il primo valore truthy.

0 || "" || "test"; // "test"

Operatore NOT (!)

Forza la conversione a booleano:

!0; // true !!"ciao"; // true !!""; // false

Pattern comuni

Valori di default

let nome = input || "Anonimo";

Se input è falsy, viene usato "Anonimo".


Controllo rapido di esistenza

if (utente) { console.log("Utente valido"); }

Funziona perché null e undefined sono falsy.


Attenzione ai casi ambigui

if (0) { } // non entra if ("") { } // non entra if (" ") { } // entra if ([]) { } // entra if ({}) { } // entra

Molti bug derivano dal non conoscere questi comportamenti.


Best practice

  • Usa === quando serve un confronto preciso.
  • Non affidarti alla truthiness per valori numerici critici.
  • Usa Boolean(valore) o !!valore per chiarezza.
  • Documenta i casi in cui sfrutti coercizioni intenzionali.

La conoscenza di truthiness e falsiness è fondamentale per scrivere codice JavaScript robusto, leggibile e privo di comportamenti imprevisti.

Aggiornato il