Una delle espressioni più sottovalutate del linguaggio JavaScript è l'istruzione return
. Si tratta di un'istruzione con cui si interrompe l'esecuzione di una funzione e, facoltativamente, si fa restituire alla funzione un valore. Per quanto sia usatissima, pochi si fermano a riflettere sul suo significato. In questo articolo vedremo alcuni casi d'uso di questa istruzione.
Gestione degli errori
Il primo caso d'uso è quello della gestione degli errori:
function doSomething(obj) {
if(typeof obj !== 'object') {
throw new Error(obj + ' non è un oggetto.');
return;
}
//...
}
Se in questo caso il parametro della funzione non è un oggetto, è inutile continuare l'esecuzione della funzione, quindi solleviamo un'eccezione è interrompiamo l'esecuzione della funzione usando return
, senza restituire alcun valore.
Gestione degli eventi
Nella gestione degli eventi l'istruzione return
è associata ad un valore booleano che consente o meno l'azione predefinita dell'evento a seconda se sia true
o
false
:
element.onclick = function() {
//...
return false;
}
Attenzione al caso particolare dei form: se si usa quest'espressione sull'evento submit
non si blocca solo l'azione predefinita dell'evento, ma ogni futuro invio del form.
Costrutto switch
return
può essere usato in un costrutto switch
in luogo di break
:
function doSomething(value) {
switch(value) {
case 'a':
return 'A';
case 'b':
return 2;
case 'c':
return null;
default:
return false;
}
}
Dato che con quest'istruzione si esce dall'esecuzione della funzione, break
in questo caso particolare non è necessario.
Ciclo for
return
può essere usato per uscire anche da un ciclo for
quando una determinata condizione viene soddisfatta:
function getElementByClass(name) {
var element = null;
var target = document.getElementsByTagName('*'),
len = target.length, i;
for(i = 0; i < len; i+=1) {
var elem = target[i];
if(elem.className == name) {
element = elem;
return element;
}
}
}
Anche in questo caso l'esecuzione della funzione cessa quando viene soddisfatta una particolare condizione.
Espressioni
return
può restituire espressioni di ritorno:
function doSomething(a, b) {
//...
return (a < b) ? 0 : 1;
}
In questo caso è tipico l'uso del costrutto ternario.