JavaScript come gestire il valore undefined
Lavorando con JavaScript si ha spesso a che fare con il valore undefined ma non sempre viene gestito correttamente.
Il valore undefined è associato alle variabili non inizializzate ed esiste una keyword unefined per controllare questa condizione.
Però non sempre può essere usata per fare dei test, ad esempio questo:
genera un eccezione di tipo
ritorna correttamente true senza sollevare eccezioni.
Per testare se una variabile è stata definita o meno va usata la keyword typeof:
il cui risultato va confrontato con la stringa "undefined". Il risualtato sarà true senza sollevare eccezioni.
L'uso della keyword typeof diventa indispensabile quando si lavora su progetti ampi dove il codice è distribuito su più file e si vuole avere la certezza che la variabile sia definita prima di accedere o semplicemente sollevare un eccezione gestita nell'interfaccia utente se la variabile non è definita.
Il controllo con undefined può tornare utile anche nelle funzioni per gestire se uno o più parametri sono stati passati o meno:
che da questi risultati:
Il valore undefined è associato alle variabili non inizializzate ed esiste una keyword unefined per controllare questa condizione.
Però non sempre può essere usata per fare dei test, ad esempio questo:
JavaScript
a === undefined
ReferenceError: a is not defined
questo perchè la variabile non è stata dichiarata. Questo invece:JavaScript
var a;
a === undefined
Per testare se una variabile è stata definita o meno va usata la keyword typeof:
JavaScript
//non dichiaro la variabile
typeof b === 'undefined'
Per comparare uso 3 uguali (Strict Equality Comparison) questo per fare una comparazione esatta di valore e tipo a differenza del doppio uguale (Abstract Equality Comparison) che cerca di fare un cast tra i due tipi e quindi risulta meno efficente. Ad esempio 1=='1' (numero e stringa che rappresenta un numero) ritorna true. Vedi Equality comparisons and sameness.
L'uso della keyword typeof diventa indispensabile quando si lavora su progetti ampi dove il codice è distribuito su più file e si vuole avere la certezza che la variabile sia definita prima di accedere o semplicemente sollevare un eccezione gestita nell'interfaccia utente se la variabile non è definita.
Il controllo con undefined può tornare utile anche nelle funzioni per gestire se uno o più parametri sono stati passati o meno:
JavaScript
function test(p){
if(p === undefined) //in alternativa typeof === 'undefined'
console.log('paramentro NON passato');
else
console.log('parametro passato di tipo: ' + (typeof p));
}
JavaScript
test(); // paramentro NON passato
test(1); // parametro passato di tipo: number
test('ciao'); // parametro passato di tipo: string