Come scrivere una funzione in Javascript
Il linguaggio javascript permette di creare delle funzioni personalizzate.
function nome(parametri) {
blocco di istruzioni
}
Per definire una funzione si usa la parola chiave function seguita
- dal nome della funzione
- dai parametri in input tra parentesi tonde
- dal blocco di istruzioni della funzione tra parentesi graffe.
A cosa serve definire una funzione? Una funzione è una subroutine richiamabile da più punti del programma. E' molto utile quando il programma compie più volte le stesse operazioni. Definire una funzione mi evita di scrivere più volte le stesse istruzioni di calcolo.
A ciascuna funzione definita in JavaScript deve essere assegnato un nome univoco
Non posso però usare nomi già riservati da javascript. Ad esempio, le parole "for", "while", "document" non posso usarle come nome di una funzione.
function nome(parametri) {
blocco di istruzioni
}
I parametri della funzione sono indicati tra parentesi dopo il nome della funzione.
Ogni parametro è separato dal successivo tramite una virgola.
Una funzione può avere uno o più parametri o non averne affatto.
function nome(param1,param2,param3) {
blocco di istruzioni
}
Anche se la funzione non ha parametri, le parentesi tonde devo scriverle lo stesso dopo il nome della funzione.
function nome() {
blocco di istruzioni
}
Il blocco di istruzioni della funzione lo inserisco tra due parentesi graffe.
function nome() {
blocco di istruzioni
}
Per fare in modo che la funzione restituisca un valore uso l'istruzione return.
function nome() {
blocco di istruzioni
return(valore);
}
Quando javascript trova l'istruzione return, interrompe l'esecuzione della funzione restuendo il controllo al programma chiamante insieme al valore d di ritorno della funzione.
Per chiamare una funzione già definita basta invocarla.
nome();
oppure se la funzione deve restituire un valore di ritorno
valore=nome();
Gli eventuali parametri da passare in input vanno messi tra parentesi al momento della chiamata (invocazione).
valore=nome("Andrea",2022);
Un esempio pratico
In questo script ho definito una funzione messaggio() che riceve in ingresso due parametri (nome, anno) e li usa per stampare sullo schermo in un messaggio di benvenuto.
<script>
function messaggio(nome, anno)
{
document.write("Benvenuto " + nome + "<br />");
document.write("Buon " + anno);
}
messaggio("Andrea",2020);
messaggio("Luca",2021);
</script>
La funzione viene invocata due volte con parametri diversi
Il risultato in output è
Benvenuto Andrea
Buon 2020
Benvenuto Luca
Buon 2021
E' un esempio banale ma utile per capire il funzionamento.
Esempio 2
In questo script definisco una funzione per calcolare il fattoriale di un numero intero
<script>
function fattoriale(numero) {
var fatt=1;
if (numero<=0) {
document.write("errore: numero negativo ");
}
for(i=1;i<=numero;i++) {
fatt=fatt*i;
}
document.write(fatt);
}
</script>
Nota. Per evitare che vada in loop ho aggiunto un'uscita forzata nel caso in cui il numero passato è negativo o nullo.
Ora invoco la funzione passandogli come valore in ingresso 4
fattoriale(4);
Lo script stampa sullo schermo il fattoriale di 4!=24 ossia 4*3*2*1=24
24
Poi invoco nuovamente la funzione passandogli 5 come valore di ingresso
fattoriale(5)
Lo script stampa sullo schermo il fattoriale di 5!=120 ossia 5*4*3*2*1=120
120
Esempio 3
Per fare in modo che la funzione restituisca un valore anziché la stampa a video, modifico lo script utilizzando l'istruzione return.
function fattoriale2(numero) {
var fatt=1;
if (numero<=0) {
return(-1);
}
for(i=1;i<=numero;i++) {
fatt=fatt*i;
}
return(fatt);
}
In questo caso la funzione restituisce un valore in uscita.
La chiamata deve assegnare il risultato alla variabile f e poi lo stampa.
var f;
f=fattoriale2(5);
document.write(f);
Il risultato in uscita è il fattoriale di 5!=120
120
Esempio 4
Nel precedente esempio ho usato una funzione per calcolare il fattoriale di un numero in modo iterativo.
In questo script utilizzo la funzione per ottenere il calcolo del fattoriale in modo ricorsivo.
function fattoriale(n) {
var fatt=1;
if (n<=0) {
return(-1);
}
if (n==1) return(n);
fatt=n*fattoriale(n-1);
return(fatt);
}
In questo caso la funzione richiama se stessa più volte ossia compie una ricorsione.
Poi invoco la funzione passandogli come parametro il numero intero 5
var f;
f=fattoriale(5);
document.write(f)
La funzione effettua cinque ricorsioni restituendo il fattoriale di 5!=120
120
La tecnica ricorsiva si basa sulla programmazione funzionale.
Il codice della funzione è molto più compatto.
Cos'è una funzione
Nel linguaggio Javascript si possono creare dei sottoprogrammi o funzioni da richiamare più volte nel corso dell'elaborazione.
Una funzione è una routine composta da una sequenza di istruzioni.
Spesso le funzioni sono anche chiamate subroutine o sottoprogrammi.
A cosa serve una funzione?
Una funzione è molto utile quando un programma deve elaborare la stessa sequenza di istruzioni in due o più parti del codice dello script.
Esempio. Spesso capita di dover ordinare i dati dal più grande al più piccolo o viceversa. Tuttavia, non esiste un'istruzione Javascript dedicata all'operazione di ordinamento. E' necessario sviluppare una sequenza di codice per ordinare i dati. Per evitare di ripetere le stesse righe di codice in più parti del programma, si può sviluppare una funzione e richiamarla all'occorrenza, ogni volta che necessita.
Come dichiarare la funzione
La funzione Javascript deve essere dichiarata all'inizio dello script tramite l'istruzione function.
function NomeFunzione ( parametro1, ... , parametro n ) { istruzioni }
Le parentesi graffe { } delimitano il blocco delle istruzioni.
La prima parentesi graffa va inserita subito dopo l'istruzione function o nella riga successiva, mentre l'ultima parentesi graffa chiude il corpo delle istruzioni.
<script>
function Media (a,b,c) {
risultato = (a + b + c)/3;
return risultato;
}
</script>
Una volta dichiarata, la funzione può essere richiamata in vari punti della pagina web senza dover scrivere lo stesso codice.
Quale nome assegnare alla funzione?
Per definire una funzione è indispensabile associargli un nome univoco, in modo da poterla poi richiamare.
Attenzione. Non devono esistere altre funzioni con lo stesso nome nello script. Inoltre, alcuni nomi non si possono usare perché sono già riservati dal linguaggio Javascript. Per il resto... c'è un'infinita libertà di scelta.
Come aggiungere dei parametri alla funzione
I parametri sono i valori che la funzione prende in carico come input.
Seguono sempre il nome della funzione stessa e sono indicati all'interno di una parentesi tonda, separati l'uno dall'altro da una virgola.
Ad esempio, nell'esempio precedente ho definito tre parametri (a, b, c).
<script>
function Media (a,b,c) {
risultato = (a + b + c)/3;
return risultato;
}
</script>
L'istruzione return chiude la funzione
L'ultima operazione da non dimenticare nella funzione è l'istruzione "return".
Questa istruzione consente la restituzione del valore allo script che l'ha chiamata.
Come richiamare ed eseguire la funzione
La funzione può essere richiamata da qualsiasi punto dello script. Questa operazione è detta invocazione o chiamata.
E' sufficiente utilizzare il nome della funzione seguita dalle parentesi tonde.
d=Media(a,b,c);
Nelle parentesi tonde occorre inserire l'elenco delle variabili o dei valori da passare in input alla funzione.
Ad esempio, se passo come parametri i valori 2, 3, 4 la funzione restituisce 3 ossia la loro media.
d=Media(2,3,4);
Il valore di ritorno (3) viene assegnato alla variabile d.
E così via.