Sobes.tech
Junior

Puoi spiegare più nel dettaglio le differenze tra null e undefined in JavaScript?

sobes.tech AI

Risposta dell'AI

  • undefined:

    • Viene assegnato a variabili dichiarate ma non inizializzate con un valore.
    • È il valore predefinito per i parametri delle funzioni a cui non sono stati passati argomenti.
    • Si ottiene tentando di accedere a una proprietà o elemento di array inesistente.
    • Tipo di dato — undefined.
  • null:

    • È un valore speciale assegnato esplicitamente a una variabile per indicare "assenza di valore".
    • Rappresenta l’assenza intenzionale di qualsiasi oggetto o valore primitivo.
    • Tipo di dato — object (questo è un errore storico in JavaScript, ma così è).

Le principali differenze nella tabella:

Caratteristica undefined null
Origine Implicito (di default) Esplicito (assegnato dallo sviluppatore)
Scopo Dichiarato, ma non assegnato un valore Assenza intenzionale di valore
Tipo di dato (typeof) undefined object
Contesto booleano false false
Uguaglianza (==) null == undefined (true) null == undefined (true)
Uguaglianza (===) null === undefined (false) null === undefined (false)

Esempio:

let a; // Dichiarata, ma non inizializzata -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Accesso a proprietà inesistente -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parametro name non passato -> undefined

let b = null; // Assegnato esplicitamente null
console.log(b); // null

let c = {};
c.data = null; // Proprietà data assegnata a null
console.log(c.data); // null

console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false