Partiell tillämpning
Lås vissa argument och återanvänd funktioner.
Partiell tillämpning är en gratis lektion i JavaScript Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för JavaScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i JavaScript Academy innehåller totalt 4 lektioner.
Vad är partiell applicering?
Partiell applicering innebär att du tar en funktion som behöver flera argument och låser fast några av dem i förväg. Resultatet blir en ny funktion som bara behöver de återstående argumenten.
Det gör att du kan bygga specialiserade funktioner från generella funktioner. En generell multiply(a, b) kan bli en specialiserad double(b) genom att låsa fast a = 2.
En funktion med många argument
Börja med en generell funktion. Här tar add tre tal som argument. Ofta anropar du den om och om igen med samma första argument.
function add(a, b, c) {
return a + b + c;
}
console.log(add(1, 2, 3));
console.log(add(1, 10, 100));Låsa argument manuellt
Den enklaste formen av partiell applicering är en wrapper-funktion som hårdkodar ett argument och skickar vidare resten.
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));Partiell applicering med bind
Function.prototype.bind är byggd för detta. Det första argumentet anger this; alla argument därefter förifylls från vänster.
Skicka in null för this när du inte bryr dig om det.
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));Binda fler än ett argument
Du kan låsa fast flera inledande argument samtidigt. Den returnerade funktionen tar emot det som återstår.
function add(a, b, c) {
return a + b + c;
}
const addElevenAndTwo = add.bind(null, 11, 2);
console.log(addElevenAndTwo(7));
console.log(addElevenAndTwo(100));En återanvändbar partial-hjälpfunktion
Du kan skriva en egen partial-hjälpfunktion som fångar förinställda argument med rest-parametern och slår ihop dem med de senare argumenten med hjälp av 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'));Specialisera generella funktioner
Partiell applicering är särskilt användbar när en generell funktion ger upphov till många små, lättlästa specialiseringar.
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));Partiell applicering med arrayer
Specialiserade funktioner blir lättlästa i arraymetoder som map.
function power(exponent, base) {
return Math.pow(base, exponent);
}
const square = power.bind(null, 2);
console.log([1, 2, 3, 4].map(square));Förifylla konfiguration
En vanlig användning i verkliga program är att låsa fast ett konfigurationsvärde, till exempel en skattesats eller en valutasymbol, och sedan återanvända resultatet överallt.
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));Partiell applicering kontra standardparametrar
Standardparametrar ger ett reservvärde när ett argument saknas. Partiell applicering låser fast ett värde, så anroparen kan inte längre ändra det för den platsen.
De löser olika problem: standardvärden är valfria, medan partiellt applicerade värden är fasta.
function log(level, message) {
return '[' + level + '] ' + message;
}
const error = log.bind(null, 'ERROR');
console.log(error('Disk full'));
console.log(error('Timeout'));Varför partiell applicering är viktigt
Partiell applicering minskar upprepning, tydliggör avsikten och är grunden för currying. När du fortsätter att skicka in samma första argument kan du överväga att låsa fast det en gång.
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));Snabb kontroll
Vad returnerar fn.bind(null, 5)?
Sammanfattning: partiell applicering
Du har lärt dig att låsa fast argument i förväg:
- Manuella wrappers hårdkodar ett argument och skickar vidare resten.
- bind(null, ...args) förifyller argument från vänster.
- En egen
partial-hjälpfunktion använder rest och spread. - Partiell applicering skapar tydliga, återanvändbara specialiseringar och banar väg för currying.
Lär dig JavaScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 59
- Lektioner
- 200
Vanliga frågor
Är lektionen ”Partiell tillämpning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen JavaScript Academy, inklusive ”Partiell tillämpning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i JavaScript Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Partiell tillämpning”?
Lås vissa argument och återanvänd funktioner. Ni övar på JavaScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig JavaScript Academy?
Du behöver inga förkunskaper. Utbildningen i JavaScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Partiell tillämpning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här JavaScript Academy-lektionen?
Ja. Varje JavaScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Partiell tillämpning
- Currying av funktioner
- Funktionskomposition
- Bygga pipe och compose