Heim > Web-Frontend > js-Tutorial > JavaScript-Currying mit einer realen Anwendung verstehen

JavaScript-Currying mit einer realen Anwendung verstehen

Patricia Arquette
Freigeben: 2025-01-20 14:33:11
Original
157 Leute haben es durchsucht

Understanding JavaScript Currying with a Real-World Application

Sind Sie schon einmal auf „Currying“ in JavaScript gestoßen und haben sich über seinen Zweck gewundert? Dieser Beitrag entmystifiziert Currying und veranschaulicht seine Vorteile anhand einfacher Beispiele und einer praktischen Anwendung, die die Klarheit und Flexibilität des Codes verbessert.

? Was ist Curry?

Currying, eine funktionale Programmiertechnik, beinhaltet die sequentielle Verarbeitung von Funktionsargumenten statt aller auf einmal. Eine Curry-Funktion liefert eine andere Funktion und wartet auf den nächsten Parameter, bis alle Argumente angegeben sind. Im Wesentlichen wandelt es eine Funktion mit mehreren Argumenten in eine Folge von Funktionen mit einem Argument um.

Lassen Sie uns dies anhand einer Analogie und eines Codes aus der realen Welt veranschaulichen:

? Einen Burger bauen

Stellen Sie sich vor, Sie bestellen einen Burger. Der Koch baut es Schicht für Schicht zusammen:

Schicht 1: Brötchen (erstes Argument) Schicht 2: Patty (zweites Argument) Schicht 3: Toppings (drittes Argument)

So lässt sich dies in Code mit regulären und Curry-Funktionen umsetzen:

? Reguläre Funktion:Alle Zutaten werden gleichzeitig weitergegeben.

<code class="language-javascript">function makeBurger(bun, patty, topping) {
    return `Your burger includes: ${bun} bun, ${patty} patty, and ${topping} topping.`;
}

const myBurger = makeBurger("Sesame", "Beef", "Cheese");
console.log(myBurger); // Output: Your burger includes: Sesame bun, Beef patty, and Cheese topping.</code>
Nach dem Login kopieren

? Curry-Funktion:Die Zutaten werden einzeln hinzugefügt.

<code class="language-javascript">function makeBurgerCurried(bun) {
    return function (patty) {
        return function (topping) {
            return `Your burger includes: ${bun} bun, ${patty} patty, and ${topping} topping.`;
        };
    };
}

// Usage example
const selectBun = makeBurgerCurried("Sesame");
const selectPatty = selectBun("Beef");
const myCurriedBurger = selectPatty("Cheese");

console.log(myCurriedBurger); // Output: Your burger includes: Sesame bun, Beef patty, and Cheese topping.</code>
Nach dem Login kopieren

✍️ Erklärung:

Erster Aufruf: makeBurgerCurried("Sesame") empfängt „Sesam“ und gibt eine Funktion zurück, die auf das Pastetchen wartet.

Zweiter Aufruf: selectBun("Beef") empfängt „Beef“ und gibt eine Funktion zurück, die auf den Belag wartet.

Dritter Anruf: selectPatty("Cheese") empfängt „Cheese“, vervollständigt die Sequenz und sendet die Burgerbeschreibung zurück.

⭐ Optimiertes Currying mit Pfeilfunktionen

Pfeilfunktionen bieten einen prägnanteren Ansatz:

<code class="language-javascript">const curriedArrow = (bun) => (patty) => (topping) =>
    `Your burger includes: ${bun} bun, ${patty} patty, and ${topping} topping`;

const myArrowBurger = curriedArrow("Sesame")("Beef")("Cheese");
console.log(myArrowBurger); // Your burger includes: Sesame bun, Beef patty, and Cheese topping</code>
Nach dem Login kopieren

⁉️ Warum Curry verwenden?

Currying eignet sich hervorragend für Szenarien, in denen die Wiederverwendung von Funktionen mit vordefinierten Argumenten erforderlich ist. Es verbessert die Wiederverwendbarkeit, Lesbarkeit und Modularität des Codes.

? Praxisnahe Anwendung: Dynamischer Rabattrechner

Erwägen Sie eine E-Commerce-Plattform mit gestaffelten Rabatten:

  • Stammkunden: 10 % Rabatt
  • Premium-Kunden: 20 % Rabatt

Vergleichen wir reguläre und Curry-Funktionsimplementierungen:

? Reguläre Funktion:Weniger flexibel und wiederverwendbar.

<code class="language-javascript">function calculateDiscount(customerType, price) {
    if (customerType === "Regular") return price * 0.9;
    else if (customerType === "Premium") return price * 0.8;
}

console.log(calculateDiscount("Regular", 100)); // Output: 90
console.log(calculateDiscount("Premium", 100)); // Output: 80</code>
Nach dem Login kopieren

? Curry-Funktion: Sehr wiederverwendbar und anpassungsfähig.

<code class="language-javascript">function createDiscountCalculator(discountRate) {
    return function (price) {
        return price * (1 - discountRate);
    };
}

const regularDiscount = createDiscountCalculator(0.1);
const premiumDiscount = createDiscountCalculator(0.2);

console.log(regularDiscount(100)); // Output: 90
console.log(premiumDiscount(100)); // Output: 80
console.log(regularDiscount(200)); // Output: 180</code>
Nach dem Login kopieren

Das Hinzufügen neuer Kundentypen ist unkompliziert:

<code class="language-javascript">const studentDiscount = createDiscountCalculator(0.15);
console.log(studentDiscount(100)); // Output: 85</code>
Nach dem Login kopieren

Fazit

Obwohl Currying zunächst komplex erscheint, vereinfacht es das Funktionsdesign, verbessert die Klarheit des Codes und fördert die Wiederverwendbarkeit. Integrieren Sie Curry in Ihre Projekte, um seine Vorteile aus erster Hand zu erleben.

Teilen Sie Ihre Erfahrungen mit Curry in den Kommentaren unten! Viel Spaß beim Codieren! ✨

Das obige ist der detaillierte Inhalt vonJavaScript-Currying mit einer realen Anwendung verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage