Osittainen soveltaminen
Kiinnittäkää osa argumenteista ja käyttäkää funktioita uudelleen.
Osittainen soveltaminen on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.
Mitä osittainen soveltaminen on
Osittainen soveltaminen tarkoittaa, että useita argumentteja tarvitsevan funktion osa argumenteista kiinnitetään etukäteen. Tuloksena syntyy uusi funktio, joka tarvitsee enää loput argumentit.
Sen avulla yleisistä funktioista voi muodostaa erikoistuneita funktioita. Yleisestä funktiosta multiply(a, b) voi esimerkiksi tehdä erikoistuneen funktion double(b) kiinnittämällä arvon a = 2.
Useita argumentteja vastaanottava funktio
Aloittakaa yleiskäyttöisestä funktiosta. Tässä add vastaanottaa kolme lukua. Usein sitä kutsutaan yhä uudelleen saman ensimmäisen argumentin kanssa.
function add(a, b, c) {
return a + b + c;
}
console.log(add(1, 2, 3));
console.log(add(1, 10, 100));Argumenttien kiinnittäminen käsin
Yksinkertaisin tapa toteuttaa osittainen soveltaminen on käärefunktio, joka kiinnittää yhden argumentin suoraan ja välittää loput eteenpäin.
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));Osittainen soveltaminen bind-avainsanalla
Function.prototype.bind on tarkoitettu juuri tähän. Sen ensimmäinen argumentti määrittää this-kontekstin, ja kaikki sitä seuraavat argumentit esitäytetään vasemmalta alkaen.
Välittäkää null this-kontekstiksi, kun sillä ei ole merkitystä.
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));Useamman argumentin sitominen
Voitte kiinnittää useita ensimmäisiä argumentteja kerralla. Palautettu funktio vastaanottaa kaikki jäljelle jäävät argumentit.
function add(a, b, c) {
return a + b + c;
}
const addElevenAndTwo = add.bind(null, 11, 2);
console.log(addElevenAndTwo(7));
console.log(addElevenAndTwo(100));Uudelleenkäytettävä partial-apufunktio
Voitte kirjoittaa oman partial-apufunktion, joka kaappaa ennalta määritetyt argumentit rest-parametrilla ja yhdistää ne myöhemmin annettuihin argumentteihin spread-syntaksin avulla.
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'));Yleisten funktioiden erikoistaminen
Osittainen soveltaminen on parhaimmillaan silloin, kun yhdestä yleisestä funktiosta muodostetaan useita pieniä ja selkeästi nimettyjä erikoistuksia.
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));Osittainen soveltaminen taulukoiden kanssa
Erikoistuneet funktiot ovat selkeitä taulukkometodien, kuten map-metodin, sisällä.
function power(exponent, base) {
return Math.pow(base, exponent);
}
const square = power.bind(null, 2);
console.log([1, 2, 3, 4].map(square));Määritysten esitäyttäminen
Yksi yleinen käytännön käyttötapa on kiinnittää määrityksen arvo, kuten veroprosentti tai valuuttatunnus, ja käyttää tulosta sen jälkeen uudelleen kaikkialla.
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));Osittainen soveltaminen ja oletusparametrit
Oletusparametri tarjoaa vara-arvon, kun argumentti puuttuu. Osittainen soveltaminen lukitsee arvon, joten kutsuja ei voi enää vaihtaa kyseisen paikan arvoa.
Ne ratkaisevat eri ongelmia: oletusarvot ovat valinnaisia, osittain sovelletut arvot kiinteitä.
function log(level, message) {
return '[' + level + '] ' + message;
}
const error = log.bind(null, 'ERROR');
console.log(error('Disk full'));
console.log(error('Timeout'));Miksi osittainen soveltaminen on tärkeää
Osittainen soveltaminen vähentää toistoa, ilmaisee tarkoituksen selkeästi ja luo pohjan curryoinnille. Kun välitätte jatkuvasti saman ensimmäisen argumentin, harkitkaa sen kiinnittämistä kerran.
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));Pikatesti
Mitä fn.bind(null, 5) palauttaa?
Kertaus: osittainen soveltaminen
Opitte kiinnittämään argumentteja etukäteen:
- Käsin kirjoitetut käärefunktiot kiinnittävät yhden argumentin ja välittävät loput eteenpäin.
- bind(null, ...args) esitäyttää argumentit vasemmalta alkaen.
- Oma
partial-apufunktio käyttää rest- ja spread-syntakseja. - Osittainen soveltaminen luo selkeitä, uudelleenkäytettäviä erikoistuksia ja valmistaa tietä curryoinnille.
Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 59
- Oppitunnit
- 200
Usein kysytyt kysymykset
Onko oppitunti ”Osittainen soveltaminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Osittainen soveltaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Osittainen soveltaminen”?
Kiinnittäkää osa argumenteista ja käyttäkää funktioita uudelleen. Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Osittainen soveltaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?
Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Osittainen soveltaminen
- Funktioiden currytys
- Funktioiden koostaminen
- pipen ja composin rakentaminen