Argomenti variabili in Javascript: due alternative

venerdì 9 ottobre, 2009

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:

JavaScript:
  1. // Questa funzione mostra il numero e il valore degli argomenti
  2. // passati facendo riferimento all'oggetto interno arguments e
  3. // non richiedendo nessuna dichiarazione
  4. function parametri_variabili() {
  5.     alert ( 'Numero argomenti passati = ' + arguments.length );
  6.     // stampa tutti gli argomenti
  7.     var o = '';
  8.     for (var i = 0; i <arguments.length; i++) {
  9.         o += arguments[i] + '\n';
  10.     }
  11.     alert( o );
  12. }

Quindi si ha:

JavaScript:
  1. parametri_variabili();  // nessuno
  2.  
  3. 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:

JavaScript:
  1. function parametri_variabili( args ) {
  2.     alert( args.miaStringa );
  3.     alert( args.mioNumero );
  4. }
  5.  
  6. // Utilizzando
  7. parametri_variabili( {
  8.     miaString: 'ciao',
  9.     mioNumero: 32
  10. });
  11.  
  12. // Oppure
  13. parametri_variabili( {
  14.     mioNumero: 32,
  15.     miaString: 'ciao'
  16. });

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.

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL