null e undefined in Javascript
null
è un valore speciale che indica l'assenza intenzionale di un valore.undefined
rappresenta l'assenza di un valore a livello di sistema, come variabili non inizializzate o proprietà mancanti.- Entrambi
null
eundefined
sono falsy, manull
è considerato un oggetto speciale, mentreundefined
è il valore di un tipo speciale. - Si usa
null
per indicare l'assenza di un valore a livello di programma, mentreundefined
è usato per indicare un'assenza di valore a livello di sistema. - È consigliabile evitare l'uso di
null
eundefined
quando possibile, ma se necessario, si preferisce usarenull
per assegnare un'assenza di valore.
null
e undefined
null
è una parola chiave del linguaggio che valuta a un valore speciale che è solitamente usato per indicare l'assenza di un valore. Usare l'operatore typeof
su null
restituisce la stringa "object", indicando che null
può essere pensato come un valore oggetto speciale che indica "nessun oggetto". In pratica, tuttavia, null
è tipicamente considerato come l'unico membro del suo proprio tipo, e può essere usato per indicare "nessun valore" per numeri e stringhe così come per oggetti. La maggior parte dei linguaggi di programmazione hanno un equivalente al null
di JavaScript: si potrebbe conoscerlo come NULL
, nil
, o None
.
JavaScript ha anche un secondo valore che indica assenza di valore. Il valore undefined
rappresenta un tipo più profondo di assenza. È il valore delle variabili che non sono state inizializzate e il valore che si ottiene quando si interroga il valore di una proprietà di un oggetto o elemento di un array che non esiste. Il valore undefined
è anche il valore di ritorno delle funzioni che non restituiscono esplicitamente un valore e il valore dei parametri di funzione per i quali nessun argomento è passato. undefined
è una costante globale predefinita (non una parola chiave del linguaggio come null
, anche se questa non è un'importante distinzione in pratica) che è inizializzata al valore undefined
. Se si applica l'operatore typeof
al valore undefined
, restituisce "undefined", indicando che questo valore è l'unico membro di un tipo speciale.
Nonostante queste differenze, null
e undefined
entrambi indicano un'assenza di valore e possono spesso essere usati in modo intercambiabile. L'operatore di uguaglianza ==
li considera essere uguali. (Si usa l'operatore di uguaglianza stretta ===
per distinguerli.) Entrambi sono valori falsy: si comportano come false
quando è richiesto un valore booleano. Né null
né undefined
hanno alcuna proprietà o metodo. Infatti, usare .
o []
per accedere a una proprietà o metodo di questi valori causa un TypeError.
Si dovrebbe considerare undefined
per rappresentare un'assenza di valore a livello di sistema, inaspettata, o simile a un errore e null
per rappresentare un'assenza di valore a livello di programma, normale, o attesa. È consigliabile evitare di usare null
e undefined
quando possibile, ma se si ha bisogno di assegnare uno di questi valori a una variabile o proprietà o passare o restituire uno di questi valori a o da una funzione, si usa solitamente null
. Alcuni programmatori si sforzano di evitare null
interamente e usano undefined
al suo posto ovunque possano.