In Javascript è possibile scrivere funzioni con argomenti variabili, cioè funzioni che non accettano necessariamente un numero predefinito di inputs. Ad esempio è possibile scrivere funzioni come questa:
1 2 3 4 5 6 7 8 9 10 11 12 | // Questa funzione mostra il numero e il valore degli argomenti // passati facendo riferimento all'oggetto interno arguments e // non richiedendo nessuna dichiarazione function parametri_variabili() { alert ( 'Numero argomenti passati = ' + arguments.length ); // stampa tutti gli argomenti var o = ''; for (var i = 0; i <arguments.length; i++) { o += arguments[i] + '\n'; } alert( o ); } |
Quindi si ha:
1 2 3 | parametri_variabili(); // nessuno parametri_variabili( "ciao", 32 ); // due argomenti: stringa e numero |
Questa tecnica è davvero utile in moltissimi casi, tuttavia – a mio parere – è possibile migliorarla in quanto questo approccio comporta:
- Gli argomenti devono seguire sempre lo stesso ordine: arguments[0] è il primo, arguments[1] è il secondo, e via discorrendo…
- L’accesso agli argomenti è per indice (arguments[0] o arguments[4] ad esempio), quindi poco “leggibile” nell’implementazione all’intero del codice
Un’alternativa potrebbe essere quela di usare gli oggetti-inline (Object Literal). Ad esempio potremmo scrivere:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function parametri_variabili( args ) { alert( args.miaStringa ); alert( args.mioNumero ); } // Utilizzando parametri_variabili( { miaString: 'ciao', mioNumero: 32 }); // Oppure parametri_variabili( { mioNumero: 32, miaString: 'ciao' }); |
Come si può vedere dal codice, l’ordine degli argomenti, essendo proprietà di un oggetto, non è importante. Inoltre nell’implementazione della funzione il codice risulta esssere più chiaro, trattando “proprietà” di un oggetto invece di indici di un array.
Questa tecnica è decisamente ottima nel caso di funzioni con molti argomenti, ovviamente.








11
Non ci sono commenti per questo Post
Lascia un commento