Node.js: come gestire i parametri opzionali

Lavorando con Node.js possiamo realizzare applicazioni interattive senza la necessita di conoscere un linguaggio di programmazione di pagine dinamiche. Sia per realizzare l'interfaccia, sia per gestire la persistenza dei dati degli utenti, possiamo usare la sintassi JavaScript. Considerando tale scenario di lavoro e importante sapere come definire le firme dei metodi delle funzioni JavaScript. In altre parole e bene che le nostre librerie siano scritte fornendo delle API robuste e usando una notazione standard.

Parametri opzionali

Parametri opzionali

Una soluzione frequente utilizza l’operatore logico OR (simbolo “||”) per distinguere i parametri valorizzati da quelli non valorizzati. Questa soluzione in realtà non risolve il problema, perché resta l’ambiguità tra un parametro non valorizzato e la stringa nulla. In altre parole, quando eseguiamo l’operazione OR con la stringa nulla il risultato dell’operazione non distingue tra i due casi. Per verificarlo basta eseguire il seguente codice

Entrambi i casi ritornano infatti come risultato il messaggio “No argument”. Una soluzione migliore sfrutta l’istruzione typeof, che permette di identificare il tipo di variabile. In associazione con l’operatore “===” (tre simboli “=”) ciò permette di riconoscere l’uguaglianza sia del valore della variabile, sia del tipo di variabile. Per approfondimenti sull’argomento rimandiamo a questo articolo.

La soluzione consigliata è la seguente

Eseguendo lo snippet qui sopra vedremo che con questo “ trucchetto” riusciamo a distinguere la stringa nulla da un parametro non valorizzato. I simboli “#” nell’istruzione di log servono unicamente ad enfatizzare il fatto che la variabile passata come argomento è effettivamente una stringa nulla (altrimenti potremmo non distinguerla da una serie di caratteri blank).

A questo punto il problema sembra completamente risolto. Esiste però un ulteriore complicazione: molto spesso alcune API di Node.js prevedono l’uso di una callback, la quale viene passata (per convenzione) dopo alcuni parametri opzionali. In questo caso, a seconda che i parametri opzionali vengano utilizzati o meno, la posizione della callback nella firma della funzione potrebbe cambiare. In questo caso dobbiamo fare un po’ d’attenzione per capire quale effettivamente dei tre parametri d’ingresso contiene la callback: approfondiamo la questione nella prossima pagina.