JavaScript: usare return

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.