0Pricing
JavaScript Academy · Lezione

Applicazione parziale

Fissi alcuni argomenti e riutilizzi le funzioni.

Applicazione parziale è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 4 lezioni in totale.

Cos'è l'applicazione parziale

Applicazione parziale significa prendere una funzione che richiede diversi argomenti e fissarne alcuni in anticipo, producendo una nuova funzione che richiede solo quelli rimanenti.

Permette di creare funzioni specializzate a partire da funzioni generiche. Una funzione generica come multiply(a, b) può diventare una funzione specializzata come double(b) fissando a = 2.

Una funzione con molti argomenti

Si parte da una funzione di uso generale. Qui add accetta tre numeri. Spesso viene chiamata più volte con lo stesso primo argomento.

function add(a, b, c) {
  return a + b + c;
}

console.log(add(1, 2, 3));
console.log(add(1, 10, 100));

Fissare gli argomenti manualmente

La forma più semplice di applicazione parziale consiste in una funzione wrapper che incorpora un argomento e inoltra quelli rimanenti.

function add(a, b, c) {
  return a + b + c;
}

function addTen(b, c) {
  return add(10, b, c);
}

console.log(addTen(2, 3));
console.log(addTen(20, 30));

Applicazione parziale con bind

Function.prototype.bind è stato progettato proprio per questo. Il primo argomento imposta this; ogni argomento successivo viene preimpostato da sinistra.

Si passi null per this quando il suo valore non è rilevante.

function add(a, b, c) {
  return a + b + c;
}

const addTen = add.bind(null, 10);

console.log(addTen(2, 3));
console.log(addTen(20, 30));

Associare più di un argomento

È possibile fissare contemporaneamente più argomenti iniziali. La funzione restituita accetta tutti quelli rimanenti.

function add(a, b, c) {
  return a + b + c;
}

const addElevenAndTwo = add.bind(null, 11, 2);

console.log(addElevenAndTwo(7));
console.log(addElevenAndTwo(100));

Un helper partial riutilizzabile

È possibile scrivere un proprio partial che cattura gli argomenti preimpostati con il parametro rest e li combina con quelli successivi usando lo spread.

function partial(fn, ...preset) {
  return function (...later) {
    return fn(...preset, ...later);
  };
}

function greet(greeting, name) {
  return greeting + ', ' + name + '!';
}

const sayHello = partial(greet, 'Hello');
console.log(sayHello('Ada'));
console.log(sayHello('Linus'));

Specializzare le funzioni generiche

L'applicazione parziale è particolarmente utile quando una funzione generica dà origine a molte piccole specializzazioni leggibili.

function multiply(a, b) {
  return a * b;
}

const double = multiply.bind(null, 2);
const triple = multiply.bind(null, 3);

console.log(double(5));
console.log(triple(5));

Applicazione parziale con gli array

Le funzioni specializzate risultano chiare all'interno di metodi degli array come map.

function power(exponent, base) {
  return Math.pow(base, exponent);
}

const square = power.bind(null, 2);

console.log([1, 2, 3, 4].map(square));

Preimpostare la configurazione

Un uso comune nel mondo reale consiste nel fissare un valore di configurazione, come un'aliquota fiscale o un simbolo di valuta, per poi riutilizzare ovunque il risultato.

function format(symbol, amount) {
  return symbol + amount.toFixed(2);
}

const usd = format.bind(null, '$');
const eur = format.bind(null, '\u20AC');

console.log(usd(9.5));
console.log(eur(9.5));

Applicazione parziale e parametri predefiniti

I parametri predefiniti forniscono un valore alternativo quando un argomento è mancante. L'applicazione parziale fissa definitivamente un valore, impedendo al chiamante di modificarlo per quella posizione.

Risolvono problemi diversi: i valori predefiniti sono opzionali, quelli delle applicazioni parziali sono fissi.

function log(level, message) {
  return '[' + level + '] ' + message;
}

const error = log.bind(null, 'ERROR');
console.log(error('Disk full'));
console.log(error('Timeout'));

Perché è importante l'applicazione parziale

L'applicazione parziale riduce le ripetizioni, esprime chiaramente l'intento ed è alla base del currying. Quando si continua a passare lo stesso primo argomento, è opportuno considerare di fissarlo una sola volta.

function between(min, max, value) {
  return value >= min && value <= max;
}

const isPercentage = between.bind(null, 0, 100);

console.log(isPercentage(50));
console.log(isPercentage(150));

Verifica rapida

Che cosa restituisce fn.bind(null, 5)?

Riepilogo: applicazione parziale

Ha imparato a fissare gli argomenti in anticipo:

  • Wrapper manuali incorporano un argomento e inoltrano quelli rimanenti.
  • bind(null, ...args) preimposta gli argomenti da sinistra.
  • Un helper partial personalizzato usa rest e spread.
  • L'applicazione parziale crea specializzazioni chiare e riutilizzabili e prepara il terreno per il currying.

Domande Frequenti

La lezione «Applicazione parziale» è gratuita?

Sì — il testo completo di «Applicazione parziale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 4 lezioni in totale.

Cosa imparerò in «Applicazione parziale»?

Fissi alcuni argomenti e riutilizzi le funzioni. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare JavaScript Academy?

Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Applicazione parziale»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?

Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Applicazione parziale
  2. Funzioni currying
  3. Composizione di funzioni
  4. Costruire pipe e compose
← Torna a JavaScript Academy