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