null e undefined in Javascript

Concetti Chiave
  • 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 e undefined sono falsy, ma null è considerato un oggetto speciale, mentre undefined è il valore di un tipo speciale.
  • Si usa null per indicare l'assenza di un valore a livello di programma, mentre undefined è usato per indicare un'assenza di valore a livello di sistema.
  • È consigliabile evitare l'uso di null e undefined quando possibile, ma se necessario, si preferisce usare null 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é nullundefined 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.