Funzioni

Le funzioni sono uno dei blocchi di codice importanti in JavaScript.

Una funzione è un insieme riutilizzabile di istruzioni per eseguire un compito o calcolare un valore. Alle funzioni possono essere passati uno o più valori e possono restituire un valore alla fine della loro esecuzione.

La dichiarazione di una funzione avviene utilizzata per creare funzioni con nome. Queste funzioni, una volata create, possono essere chiamate con il loro nome specificato.

Per dichiarare una funzione serve:

  • la parola chiave function.
  • il nome della funzione.
  • una lista opzionale di parametri separati da virgole racchiuse da un insieme di parentesi tonde.
  • Un corpo funzione racchiuso tra parentesi graffe.

Le funzioni possono essere richiamate, o eseguite, ovunque nel tuo codice utilizzando le parentesi che seguono il nome della funzione.

Quando una funzione viene chiamata, il codice all'interno, chiamato corpo della funzione, viene eseguito. Gli argomenti sono valori passati in una funzione quando viene chiamata.

// Definizione della funzione
function somma(num1, num2) {
  return num1 + num2;
}
// Chiamare la funzione:
somma(3, 6);
9

Parametri di una funzione

Gli input delle funzioni sono noti come parametri quando una funzione viene dichiarata o definita.

I parametri sono utilizzati come variabili all'interno del corpo della funzione. Quando la funzione viene chiamata, questi parametri avranno il valore di qualsiasi cosa sia passata come argomento. È possibile definire una funzione senza parametri.

// Il parametro è nome
function prova(name) {
   //codice dentro la funzione
};

Affermazione return

Le funzioni restituiscono i valori utilizzando la parola chiave return.

Return termina l'esecuzione della funzione e restituisce il valore specificato nella posizione in cui è stato chiamato.

Un errore comune è quello di dimenticare la parola chiave return, in quel caso la funzione restituisce un valore undefined di default.

Con il return:

function sum(num1, num2) {
   return num1 + num2;
};

Senza return, quindi la funzione non restituisce la somma:

function sum(num1, num2) {
   num1 + num2;
};

Funzioni freccia

Questo metodo di scrivere le funzioni è pulito e conciso. La sintassi per una funzione freccia non richiede la parola chiave function ed usa invece una freccia (formata dal carattere uguale e la parentesi angolare) per separare il parametro o i parametri dal corpo.

Ci sono deu caratteristiche particolari delle funzioni di freccia:

  • le funzioni di freccia con un singolo parametro non richiedono le parentesi tonde.
  • le funzioni freccia con una singola istruzione possono essere scritte in forma concisa che restituisce il risultato dell'espressione senza la parola chiave return.

Due parametri:

const sum = (a, b) => {
  return a + b;
};
console.log(sum(3,3));
6

Nessun parametro:

const stampaProva = () => {
   console.log('Prova');
};
stampaProva();
Prova

Singolo parametro:

const peso = peso => {
   console.log("Il mio peso è " + peso);
};
peso(88);
Il mio peso è 88

Funzione freccia ristretta(concisa):

const moltiplica = (a, b) => a * b;
console.log(moltiplica(5, 5));
25

Funzioni anonime

Le funzioni anonime in JavaScript non hanno una nome. Possono essere definite con la parola chiave function o come funzione freccia.

Funzione con nome:

function stampaProva() {
   return 'Prova!';
};

Funzione anonima:

const stampaProva = function() {
   return 'Prova!';
};

Funzioni assegnate alle variabili

In JavaScript, le funzioni sono un tipo di dati come lo sono stringhe, numeri e gli array. Pertanto le funzioni possono essere assegnate come valori alle variabili, ma sono diverse da tutti gli altri tipi di dati perché possono essere richiamate.

let sommaTre = (num) => {
   return num + 3;  
};

f è assegnato il valore di sommaTre.

let f = sommaTre;

sommaTre(3); // 6

Poiché f ha un valore di funzione, può essere richiamato.

console.log(f(10));
13

Funzione callback

In JavaScript, una funzione callback è una funzione che viene passata in un'altra funzione come argomento. Questa funzione può quindi essere richiamata durante l'esecuzione di quella funzione di ordine superiore (di cui è un argomento). Una "funzione di ordine superiore" è una funzione che accetta funzioni come parametri e/o restituisce una funzione.

Poiché in JavaScript le funzioni sono oggetti, le funzioni possono essere passate come argomenti.

const pari = (n) => {
   return n % 2 == 0;
};

let messaggio = (funPari, num) => {
   const isNumEven = funPari(num);
   console.log(`Il numero ${num} è pari? ${isNumEven}.`)
};

messaggio(pari, 4);