window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Programmazione funzionale in JavaScript Parte 1 - Introduzione - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2022-05-25
Sviluppo di software

Programmazione funzionale in JavaScript Parte 1 - Introduzione

The Codest

Pawel Ged

Sviluppatore Vue.js

Leggete il nostro articolo per scoprire la potenza della programmazione funzionale in JavaScript. La programmazione funzionale è classificata come un paradigma dichiarativo in cui la descrizione del programma è separata dai calcoli.

Che cos'è la programmazione funzionale?

"In termini semplici, la programmazione funzionale è una sviluppo software stile che pone l'accento sull'uso delle funzioni".

Estratti dal libro: Luis Atencio "Programmazione funzionale in JavaScript. Come migliorare il vostro JavaScript programmi che utilizzano tecniche funzionali".

Programmazione funzionale è classificato come un dichiarativo in cui la descrizione del programma è separata dai calcoli. L'accento è posto sull'uso di espressioni per descrivere la logica del programma. È l'opposto di imperativo programmazione, dove il codice viene eseguito passo dopo passo e indica al computer in dettaglio come svolgere il lavoro.

Dichiarativo vs imperativo, esempi

Consideriamo un caso in cui abbiamo una matrice di numeri interi e dobbiamo elevare ciascuno di essi alla seconda potenza e poi selezionare solo i valori che non sono pari.

Imperativo

const numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9];

const risultati = []

for(let i = 0; i < numeri.lunghezza; i++) {
const secondPower = Math.pow(numeri[i], 2)
if(secondPower & 1) { // o % 2 ma le operazioni sui bit sono più veloci
results.push(secondPower);
}
}

console.log(risultati) // [1, 9, 25, 49, 81]

Per quanto riguarda il imperativo L'attenzione ai dettagli dell'implementazione è chiaramente visibile. Nel ciclo, è possibile vedere l'indice dell'array basato sulla necessità di controllare il numero di elementi. A causa dell'elevato numero di dettagli nel codice, è più difficile concentrarsi su ciò che sta facendo. Concentriamoci ora sull'elemento dichiarativo soluzione.

Dichiarativo

const risesToSecondPower = (num) => Math.pow(num, 2)
const isOdd = (num) => num & 1;

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

const risultati = numeri
.map(risesToSecondPower)
.filter(isOdd);

console.log(risultati) // [1, 9, 25, 49, 81]

In questa soluzione, l'implementazione è stata separata dall'invocazione, portando la logica in funzioni separate. Grazie a questa soluzione, possiamo concentrarci solo sui nomi delle funzioni che descrivono ciò che accade al loro interno. Inoltre, il livello di astrazione è stato innalzato e la logica può essere riutilizzata. Ora concentriamoci sulla chiamata. Non ci sono dettagli, ma solo una descrizione che ci dice cosa fa questo codice, passo dopo passo:

  1. mappa(saleAlSecondoPotere) - prende ogni elemento di una matrice e lo eleva alla seconda potenza,
  2. filtro(isOdd) - e selezionare gli elementi dispari.

Vantaggi

Programmazione funzionale ha molti vantaggi. Quando si tratta di JavaScriptL'uso delle funzioni è naturale perché si tratta di un linguaggio funzionale. Anche le classi in questo linguaggio sono "zucchero sintattico" e sono sottoposte a funzioni.

Per quanto riguarda la leggibilità, nell'approccio imperativo il codice diventa di solito un elenco di nomi di funzioni che possono essere letti in sequenza senza approfondire la loro logica. Di conseguenza, non ci si concentra sui dettagli dell'implementazione.

Un altro vantaggio è quello di attenersi alla convenzione degli oggetti immutabili. Grazie a questo approccio, il codice diventa più sicuro, perché i riferimenti in JavaScript sono molto forti ed è facile modificare l'oggetto indesiderato.

Nella programmazione funzionale, il codice viene suddiviso in piccole funzioni che possono essere facilmente considerate come codice astratto riutilizzabile.

Funzione pura

Una delle considerazioni importanti nella programmazione funzionale sono le funzioni pure. Per creare una funzione di questo tipo, è necessario ricordare alcune regole:

  • il risultato che la funzione restituisce dipende solo dai parametri di ingresso,
  • non utilizzare variabili globali e variabili che non rientrano nel proprio ambito,
  • non modificano lo stato dei parametri,
  • Le funzioni pure non hanno "effetti collaterali" (di solito modificano le proprietà degli oggetti),
  • per i parametri di ingresso indicati, restituiranno sempre uno stesso risultato,
  • una funzione pura accetta sempre un parametro e restituisce sempre un parametro.
// Funzione Inpure
let counter = 5
...
const multipleCounter = (moltiplicatore) => {
contatore = contatore * moltiplicatore
}

multiplyCounter(2) // -> ? il risultato dipende dal valore iniziale
// Funzione pura
const multiplyBy = (moltiplicatore) => (valore) => valore * moltiplicatore
const multipleByTwo = multiplyBy(2)

const counter = multiplyByTwo(5) // -> 10

La prima funzione è imprevedibile perché dipende da un parametro esterno che può cambiare. La seconda funzione è trasparente, dipende solo dai parametri di ingresso, non li modifica e non utilizza variabili fuori dall'intervallo. È trasparente perché dipende dai parametri, non li modifica, non utilizza variabili fuori dall'intervallo e restituisce un nuovo valore.

banner di cooperazione

Articoli correlati

Sviluppo di software

Strumenti Javascript in azione

Scoprite alcuni strumenti di recupero JavaScript per migliorare la vostra programmazione. Scoprite di più su ESLint, Prettier e Husky!

The Codest
Reda Salmi Sviluppatore React

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

    it_ITItalian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek it_ITItalian