Come funzionano le closure in JavaScript

di Lorenzo Neri

Come funzionano le closure in JavaScript? C’è un modo semplice per capirlo attraverso vari esempi? In questo articolo affrontiamo l’argomento!

Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Le closure non sono magiche

Partiamo dal principio: le closure non sono niente di strano o magico, ma prima ancora di capire come funzionano in JavaScript, è giusto spiegare che cosa sono.

Mi rendo benissimo conto che non posso sapere il tuo livello di esperienza nella programmazione funzionale, perciò se già sai cosa sono le closure, ti invito a saltare a piè pari oltre questa sezione!

Spesso il materiale accademico a riguardo delle closure, è abbastanza tecnichese, meglio vedere con esempio concreto cosa sono:

function scriviCiao(nome){
   var testo = "Ciao " + nome;
   var scrivi = function() { console.log(testo); }
   scrivi();
}
scriviCiao("Marco");

Due piccole precisazioni:

  • Quando all’interno di una funzione dichiariamo altre funzioni, le variabili locali create dentro la prima funzione non vengono distrutte quando la funzione esiste. Le variabili semplicemente sono invisibili per il mondo esterno. Quindi, le funzioni dichiarate all’interno della prima, possono essere ritornate dalla funzione padre, possono comunicare quindi scrivere e leggere tramite queste variabili locali.
  • Le closure sono una modalità d’uso del criterio di funzioni di prima classe.

Un esempio di closure in JavaScript

Una volta chiarito cosa sono le closure, vediamo un esempio in JavaScript.

function scriviCiao(nome){
  var testo= "Ciao " + nome; //Variabile locale
  var scrivi = function () { console.log(testo); }
  return scrivi;
}
var scrivi2 = scriviCiao("Marco");
scrivi2(); //Stampa nel log "Ciao Marco"

Se sei abituato a programmare in JavaScript, capirai come sia possibile che la variabile “scrivi2” contenga una funzione eseguibile 😀

Però, dove sta la vera differenza?

La variabile “scrivi2” contiene al suo interno una funzione anonima (quella che a tutti gli effetti esegue la stampa nel log).

E di fatto, questa anonymous function è dichiarata all’interno di un’altra funzione: “scriviCiao” nel nostro caso.

Quindi, come funzionano le closure in JavaScript?

In parole molto semplici:

Le closure in JavaScript funzionano in modo semplicissimo.

Abbiamo una closure quando dichiariamo una funzione anonima all’interno di un’altra funzione

Semplice, rapido, immediato, indolore.

Continua a scoprire di più con questi articoli!

2 commenti

macjames 23/04/2022 - 11:17

Spiegata malissimo da uno che non ha capito cosa sono…

Rispondi
Lorenzo Neri 23/04/2022 - 11:22

Ciao, non sono solito approvare commenti di disprezzo senza il benché minimo interesse ad instaurare un confronto e uno scambio di opinioni.

A questo giro lo faccio per un semplice motivo: accettare il fatto che fra i vari visitatori del sito ci sarà pur sempre qualcuno che avrà da ridire per il puro gusto di lamentarsi e non per l’interesse ad un confronto, come monito, come ricordo.

Un saluto.

Rispondi

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più