Rumah > hujung hadapan web > tutorial js > Memahami JavaScript Currying dengan Aplikasi Dunia Sebenar

Memahami JavaScript Currying dengan Aplikasi Dunia Sebenar

Patricia Arquette
Lepaskan: 2025-01-20 14:33:11
asal
158 orang telah melayarinya

Understanding JavaScript Currying with a Real-World Application

Pernah menemui "kari" dalam JavaScript dan tertanya-tanya tentang tujuannya? Catatan ini menyahmiskinkan kari, menggambarkan faedahnya dengan contoh mudah dan aplikasi praktikal yang meningkatkan kejelasan dan fleksibiliti kod.

? Apa itu Kari?

Kari, teknik pengaturcaraan berfungsi, melibatkan pemprosesan argumen fungsi secara berurutan dan bukannya sekaligus. Fungsi kari menghasilkan fungsi lain, menunggu parameter seterusnya sehingga semua argumen dibekalkan. Pada asasnya, ia mengubah fungsi berbilang hujah menjadi urutan fungsi hujah tunggal.

Mari kita menggambarkan dengan analogi dan kod dunia sebenar:

? Membina Burger

Bayangkan memesan burger. Chef memasangnya selapis demi selapis:

Lapisan 1: Sanggul (hujah pertama) Lapisan 2: Patty (hujah kedua) Lapisan 3: Topping (hujah ketiga)

Begini cara ini diterjemahkan kepada kod menggunakan fungsi biasa dan kari:

? Fungsi Biasa: Semua bahan diluluskan serentak.

<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>
Salin selepas log masuk

? Fungsi Kari: Bahan ditambah satu demi satu.

<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>
Salin selepas log masuk

✍️ Penjelasan:

Panggilan Pertama: makeBurgerCurried("Sesame") menerima "Sesame" dan mengembalikan fungsi menanti patty.

Panggilan Kedua: selectBun("Beef") menerima "Daging Lembu" dan mengembalikan fungsi menunggu topping.

Panggilan Ketiga: selectPatty("Cheese") menerima "Keju", melengkapkan urutan dan mengembalikan perihalan burger.

⭐ Kari Selaras dengan Fungsi Anak Panah

Fungsi anak panah menawarkan pendekatan yang lebih ringkas:

<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>
Salin selepas log masuk

⁉️ Kenapa Guna Karipap?

Kari cemerlang dalam senario yang memerlukan penggunaan semula fungsi dengan hujah yang telah ditetapkan. Ia meningkatkan kebolehgunaan semula kod, kebolehbacaan dan modulariti.

? Aplikasi Dunia Sebenar: Kalkulator Diskaun Dinamik

Pertimbangkan platform e-dagang dengan diskaun berperingkat:

  • Pelanggan tetap: 10% diskaun
  • Pelanggan premium: diskaun 20%

Mari kita bandingkan pelaksanaan fungsi biasa dan kari:

? Fungsi Biasa: Kurang fleksibel dan boleh digunakan semula.

<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>
Salin selepas log masuk

? Fungsi Kari: Sangat boleh digunakan semula dan boleh disesuaikan.

<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>
Salin selepas log masuk

Menambah jenis pelanggan baharu adalah mudah:

<code class="language-javascript">const studentDiscount = createDiscountCalculator(0.15);
console.log(studentDiscount(100)); // Output: 85</code>
Salin selepas log masuk

Kesimpulan

Walaupun pada mulanya kelihatan rumit, kari memudahkan reka bentuk fungsi, meningkatkan kejelasan kod dan menggalakkan kebolehgunaan semula. Masukkan karipap ke dalam projek anda untuk merasai sendiri kelebihannya.

Kongsi pengalaman anda dengan kari dalam komen di bawah! Selamat mengekod! ✨

Atas ialah kandungan terperinci Memahami JavaScript Currying dengan Aplikasi Dunia Sebenar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan