null e non definito

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