Uno degli elementi chiave di un programma, in questo caso di un programma Javascript, sono la funzioni.
Una funzione raccoglie in se tutte le istruzioni per assolvere ad un determinato compito allโinterno di un programma. Una funzione, quindi, รจ una parte (relativamente) autonoma di un programma in quanto assolve ad un compito specifico che puรฒ essere ripetuto piรน volte in diversi punti del programma stesso.
Organizzare un programma in funzioni consente una maggiore pulizia del codice sorgente e, soprattutto, facilita il riutilizzo del codice e, di conseguenza, consente di creare programmi piรน snelli e semplici di mantenere ed aggiornare.
La sintassi per creare una funzione in Javascript รจ la seguente:
function nomeFunzione(argomenti) {
istruzioni;
}
Utilizziamo la parola chiave function, assegniamo un nome alla funzione, in questo caso "nomeFunzione" e, come si puรฒ constatare, utilizziamo le parentesi tonde subito dopo per passare alla funzione eventuali argomenti (cioรจ dei dati che la funzione potrร utilizzare per la sua elaborazione).
Si noti che il passaggio di argomenti รจ del tutto facoltativo, in mancanza il nome della funzione sarร seguito da delle parentesi vuote (non essendo possibile ometterle).
Il contenuto della funzione, ovvero le istruzioni che compongono il programma, viene racchiuso tra parentesi graffe { e }.
Eโ importante non dare alle funzioni nomi che indicano parole chiave utilizzate da Javascript, ad esempio non รจ possibile utilizzare write() come nome di una funzione: "write", infatti, รจ un metodo dellโoggetto document e creando una funzione con questo nome (o con altre parole riservate) ci verrร restituito un errore.
Eโ tuttavia possibile utilizzare il nome Write() oppure WRITE(), dato che javascript รจ un linguaggio case-sensitive, ovvero riconosce differenze tra maiuscolo e minuscolo: in questo modo lโinterprete non riconoscerร la funzione Write() come nome di un metodo, ma come parola "estranea" alla sintassi Javascript e la considererร valida.
Valgono, inoltre, per i nomi delle funzioni le stesse considerazioni fatte in occasione dei nomi delle variabili.
Parametri nelle funzioni
Un parametro รจ in genere un valore soggetto a variazioni, ad esempio una stringa di testo o un numero. I parametri vengono "passati" alla funzione allโinterno delle parentesi tonde che seguono al nome della funzione. Se sono piรน di uno, i parametri delle funzione devono essere separati da una virgola.
function nomeFunzione(arg1, arg2, ..., argN) {
istruzioni;
}
Facciamo un esempio di una semplice funzione per il calcolo dellโIVA su un prezzo.
function calcolaIVA(prezzo,aliquota){
var iva = (prezzo/100)*aliquota;
alert(iva + ' Euro');
}
Per richiamare la funzione:
<span onclick="calcolaIVA(100,22)">clicca qui</span>
Facendo click apparirร un alert con il valore dellโIVA applicata al prezzo passato in argomento (nel nostro caso il risultato sarร "22 Euro").
Impostare un valore di ritorno con return
Nel nostro esempio il risultato della funzione viene mostrato allโinterno di una finestra di avviso. Molto spesso, in realtร , il frutto dellโelaborazione di una funzione viene restituito attraverso lโutilizzo della keyword return, viene cioรจ restituito sotto forma di valore di ritorno.
Cosรฌ facendo la funzione non si interessa del modo in cui il valore verrร eventualmente mostrato a videoโฆ ma si limita ad effettuare la sua elaborazione ed a restituirne il risultato alla routine principale.
Vediamo, quindi, lโesempio del nostro calcolatore di IVA modificato:
function calcolaIVA(prezzo,aliquota){
var iva = (prezzo/100)*aliquota;
return iva;
}
Per ottenere lo stesso risultato di prima, quindi, avremmo dovuto impostare lโalert() direttamente nellโevento onclick del tag <span> in questo modo:
<span onclick="alert(calcolaIVA(100,22))">clicca qui</span>
Lโutilizzo di return รจ molto utile quando la funzione viene utilizzata in diversi punti del programma ed il suo risultato manipolato in modi differenti. Utilizzando return, inoltre, il risultato di una funzione puรฒ essere utilizzato anche per valorizzare una variabile:
var tax = calcolaIVA(100,22);