JavaScript ha diversi modi per indicare l'assenza di un valore. In questa pagina vengono descritti i due modi più comuni: i tipi di dati null
e undefined
.
null
La parola chiave null
rappresenta un'assenza di valore definita intenzionalmente. null
è una primitiva, anche se l'operatore typeof
restituisce che null
è un oggetto.
Si tratta di un errore che è stato trasferito
dalla prima versione di JavaScript e che è stato lasciato intenzionalmente
senza indirizzo per evitare di interrompere il comportamento previsto sul web.
typeof null
> object
Puoi definire una variabile come null
aspettando che rifletta un valore assegnato a un certo punto di uno script o un valore esplicitamente assente. Puoi anche assegnare il valore null
a un riferimento esistente per cancellare un valore precedente.
undefined
undefined
è un valore primitivo assegnato alle variabili
appena dichiarate o al valore risultante di un'operazione che
non restituisce un valore significativo. Ad esempio, questo può accadere quando
dichiari una funzione nella console per gli sviluppatori di un browser:
function myFunction() {}
> undefined
Una funzione restituisce esplicitamente undefined
quando la relativa istruzione return
non restituisce alcun valore.
(function() {
return;
}());
> undefined
Confronto di null
e undefined
Sebbene undefined
e null
abbiano alcune sovrapposizioni funzionali, hanno
scopi diversi. Nel senso più stretto, null
rappresenta un valore
definito intenzionalmente come "vuoto", mentre undefined
rappresenta una mancanza di un valore assegnato.
null
e undefined
sono ampliamente uguali, ma non strettamente uguali.
L'operatore di uguaglianza libera coerisce gli operandi di tipi diversi in valori booleani, rendendo null
e undefined
entrambi false
. L'operatore di uguaglianza rigorosa
considera gli operandi di diversi tipi di dati come disuguali.
null == undefined
> true
null === undefined
> false
A differenza della parola chiave riservata null
, undefined
è una proprietà
dell'oggetto globale. Si tratta di una decisione di progettazione presa all'inizio dello sviluppo di JavaScript e ha permesso ai browser precedenti di sovrascrivere completamente undefined
. Nei browser moderni, è ancora possibile utilizzare undefined
come identificatore in ambiti non globali, sostituendo il suo valore nell'ambito di quella dichiarazione. Non usare mai undefined
come identificatore. Ciò può causare comportamenti imprevisti ed è probabile che confonda i futuri gestori del tuo codebase.
Verifica le tue conoscenze
Cosa restituisce typeof null
?
object
undefined
primitive
string