![]() |
Le lambda functions (o funzioni anonime) sono un concetto fondamentale nella programmazione funzionale e sono comunemente utilizzate in linguaggi come JavaScript.
In JavaScript, una lambda function è semplicemente una funzione che non ha un nome specifico e viene definita inline, spesso come argomento di altre funzioni o come ritorno di una funzione. Queste funzioni sono compatte, concise e vengono usate in situazioni dove non è necessario definire una funzione completa con un nome.
Lambda Functions in azione
Le lambda functions sono anche note come funzioni anonime o arrow functions, nel caso di JavaScript con la sintassi => introdotta in ECMAScript 6 (ES2015). La loro sintassi compatta e potente consente di scrivere codice funzionale in modo più espressivo e leggibile.
1. Funzioni Anonime con function
In JavaScript, una funzione anonima può essere definita utilizzando la parola chiave function, senza un nome associato. Ecco un esempio:
In questo esempio, la funzione anonima function(num) { return num * 2; } viene passata come argomento al metodo map() per moltiplicare ogni elemento dell'array per 2.
2. Arrow Functions (sintassi compatibile con le Lambda)
A partire da ECMAScript 6 (ES6), è stata introdotta la sintassi delle arrow functions (=>), che è una forma più concisa di scrivere le funzioni anonime. La sintassi è la seguente:
In questo caso, num => num * 2 è un arrow function che esegue lo stesso compito della funzione anonima di prima, ma in modo più compatto.
È importante notare che le arrow functions non hanno il proprio this, il che le rende particolarmente utili in alcuni scenari (di solito, quando si vogliono evitare problemi di scoping con il this).
La Sintassi delle Lambda Functions
Partiamo da esempio pratico di lambda functions per filtrare gli elementi di un array. Immagina di avere un array di numeri e di voler ottenere solo quelli pari:
In questo caso, la lambda function num => num % 2 === 0 viene utilizzata per filtrare i numeri pari dall'array, ma come funziona di preciso questa sintassi? Cerchiamo di capirlo meglio confrontandola con la programmazione tradizionale (imperativa).
Sintassi di base
La sintassi di una arrow function è la seguente:
1. Funzione con due o più parametri
Con Arrow Function:
Senza Arrow Function (funzione tradizionale):
In questo caso, il comportamento è lo stesso, ma la arrow function è più concisa.
2. Funzione con un solo parametro e che restituisce un valore direttamente
Con Arrow Function:
Senza Arrow Function (funzione tradizionale):
Nel caso ci sia un solo parametro in input alla funzione (x) e una sola operazione che la funzione deve eseguire (x * x), le parentesi (sia tonde che graffe) non servono ed è possibile eliminare il return.
3. Funzione senza parametri
Con Arrow Function:
Senza Arrow Function (funzione tradizionale):
Nel caso non ci siano parametri in input, è necessario utilizzare le parentesi ().
4. Funzione con più righe di codice
Con Arrow Function:
Senza Arrow Function (funzione tradizionale):
Anche in questo caso, la arrow function non cambia la logica, ma è leggermente più compatta nella scrittura.
5. Funzione che ritorna un oggetto
Con Arrow Function:
Senza Arrow Function (funzione tradizionale):
In questo caso, la arrow function permette di omettere la parola chiave return e le parentesi graffe, rendendo il codice più compatto.
6. Contesto di this
Una delle principali differenze tra le arrow functions e le funzioni tradizionali è come gestiscono il contesto di this.
Senza Arrow Function (funzione tradizionale):
Nel caso della funzione tradizionale, quando la funzione è passata a setTimeout, il contesto di this cambia e non fa più riferimento all'oggetto person.
Con Arrow Function:
Con l'arrow function, this mantiene il contesto dell'oggetto person, evitando il problema della perdita del contesto.
8. Impossibilità di usare new con le arrow functions
Le arrow functions non possono essere utilizzate come costruttori di oggetti, quindi non è possibile chiamarle con new.
Senza Arrow Function (funzione tradizionale):
Con Arrow Function:
Le arrow functions non hanno il proprio this, quindi non possono essere usate come costruttori, causando un errore se provi a utilizzarle con new.
Conclusioni
Le lambda functions (o arrow functions) sono uno degli strumenti principali della programmazione funzionale in JavaScript:
- Sintassi più concisa: Le arrow functions sono generalmente più brevi e leggibili, in particolare quando si ha a che fare con funzioni di callback o quando si restituiscono valori in modo diretto.
- Contesto di
this: Le arrow functions non cambiano il contesto dithis, quindi sono molto utili quando vuoi mantenere il valore dithisdal contesto in cui la funzione è definita. - Non utilizzabili come costruttori: Le arrow functions non possono essere usate con
new, mentre le funzioni tradizionali possono.
In JavaScript, l'adozione delle lambda functions consente di scrivere codice più elegante, ridurre il numero di righe di codice e migliorare la comprensione del flusso di esecuzione. Essendo un concetto chiave nella programmazione moderna, le lambda functions sono un'abilità essenziale per ogni sviluppatore che lavora con linguaggi funzionali o con JavaScript.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
.webp)