Javascript, null o undefined.. Dissipiamo l’oscuro.

Javascript è il linguaggio front-end più utilizzato al mondo. Ha avuto un’evoluzione incredibile tanto da essere oggi ostico scoprire tutte le sue sfaccettature. Ma javascript è anche un linguaggio molto completo, talmente completo da presentare alcuni costrutti sintattici apparentemente simili ma concettualmente anche notevolmente diversi; in questo post verranno analizzate le differenze esistenti tra undefined e null, due entità che se non interpretate in modo univoco potrebbero essere utilizzate in sostituzione l’una dell’altra, generando così eccezioni e comportamenti inattesi.

A tal proposito è possibile sottolineare innanzitutto che:

  • undefined viene impiegato per rappresentare il fatto che una variabile non è stata dichiarata; quest’ultima, inoltre, potrebbe essere stata dichiarata ma non ancora assegnata ad un valore specifico;
  • null è invece un’assegnazione di valore che significa “nessun valore”.

Dal punto di vista delle modalità secondo le quali Javascript lavora con tali entità si può sostenere che il linguaggio imposta le variabili non assegnate associando loro un valore predefinito (default value) per undefined, un valore invece non verrà mai impostato da JavaScript su null, dovrà essere quindi lo sviluppatore a stabilire che una variabile non dovrà avere un valore.

Il fatto che tra i due costrutti esistano delle differenze definite nativamente in JavaScript può essere dimostrato grazie all’impiego degli operatori; si ipotizzi per esempio di sottoporre una variabile ad un controllo di identità:

if (typeof tmp === "undefined") {

  alert('variabile undefined');

}

elseif (tmp === null) {

  alert('variabile null');

}

In questo modo sapremo se una variabile è undefined o null.

Importante osservare che l’operatore di uguaglianza (“==”) considera undefined e null uguali, restituendo TRUE, mentre lo stesso non accadrà utilizzando il già citato operatore di identità (“===”) che invece restituirà FALSE.

Si ricordi inoltre che entrambi sono dei costrutti primitivi falsi dal punto di vista booleano, tale caratteristica però non li rende intercambiabili.

Spero di aver fatto un pò di luce sull’argomento.

Alla prossima.

 

Michele Magurno

Appassionato da sempre di tecnologia, tra una strimpellata e l’altra ho scelto di buttarmi a capofitto nel mondo dell’informatica e del web attraverso lo studio di Java come linguaggio di programmazione. Passione ed entusiasmo mi spingono ad ampliare il mio bagaglio e a scoprire sempre cose nuove, senza abbandonare l’hobby della musica e la mia fida chitarra.

Non perderti gli articoli correlati

Iscriviti alla nostra newsletter periodica per
ricevere i nostri aggiornamenti via mail!