Rumah > hujung hadapan web > tutorial js > Menguasai Kari dalam JavaScript: Tingkatkan Kebolehgunaan Semula dan Fleksibiliti Kod

Menguasai Kari dalam JavaScript: Tingkatkan Kebolehgunaan Semula dan Fleksibiliti Kod

DDD
Lepaskan: 2024-12-24 05:28:18
asal
716 orang telah melayarinya

Mastering Currying in JavaScript: Enhance Code Reusability and Flexibility

Memahami Currying dalam JavaScript

Kari ialah teknik pengaturcaraan berfungsi yang digunakan dalam JavaScript di mana fungsi yang mengambil berbilang argumen diubah menjadi urutan fungsi, masing-masing menerima satu argumen. Ini membolehkan anda menggunakan sebahagian hujah, memberikan cara yang lebih fleksibel untuk bekerja dengan fungsi.

1. Apa itu Karipap?

Kari ialah proses mengubah fungsi yang mengambil berbilang argumen menjadi satu siri fungsi yang setiap satu mengambil satu argumen. Fungsi pertama akan mengambil hujah pertama, mengembalikan fungsi baharu yang mengambil hujah kedua dan seterusnya, sehingga semua hujah telah disediakan.

Contoh Karipap:

Contoh asas kari boleh digambarkan seperti berikut:

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

const addFive = add(5); // The first function is called with 5
console.log(addFive(3)); // Output: 8 (5 + 3)
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh di atas:

  • add mengambil satu hujah a dan mengembalikan fungsi yang mengambil hujah kedua b.
  • Apabila anda memanggil add(5), ia mengembalikan fungsi yang a ditetapkan sebagai 5. Fungsi baharu kini mengambil b dan menambahkannya kepada 5.

2. Karipap dengan Pelbagai Hujah

Kari adalah paling berguna apabila anda mempunyai fungsi yang memerlukan berbilang hujah dan anda ingin memecahkannya kepada kepingan yang lebih kecil dan boleh digunakan semula. Berikut ialah contoh karipap dengan pelbagai hujah:

Contoh Karipap dengan Pelbagai Hujah:

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

const multiplyBy2 = multiply(2);  // First argument is fixed as 2
const multiplyBy2And3 = multiplyBy2(3); // Second argument is fixed as 3
console.log(multiplyBy2And3(4)); // Output: 24 (2 * 3 * 4)
Salin selepas log masuk
Salin selepas log masuk

Dalam kes ini:

  • darab(2) mengembalikan fungsi yang mengambil b.
  • Fungsi yang dikembalikan mengambil b dan mengembalikan fungsi lain yang mengambil c.
  • Apabila darabBy2And3(4) dipanggil, ia mengira 2 * 3 * 4.

3. Contoh Karipap: Pelaksanaan Tersuai

Anda boleh melaksanakan kari secara manual dengan mencipta fungsi yang mengambil beberapa argumen dan mengembalikan fungsi yang mengumpul argumen tersebut.

Fungsi Kari Tersuai:

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args);
    } else {
      return function(...newArgs) {
        return curried(...args, ...newArgs);
      };
    }
  };
}

// Example function
function sum(a, b, c) {
  return a + b + c;
}

const curriedSum = curry(sum);
console.log(curriedSum(1)(2)(3)); // Output: 6
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh di atas:

  • Kami mencipta fungsi karipap tersuai yang boleh membuat sebarang fungsi.
  • sum(1, 2, 3) dibahagikan kepada beberapa panggilan: curriedSum(1)(2)(3).

4. Kenapa Guna Karipap?

Kari membolehkan anda mencipta lebih banyak fungsi yang boleh digunakan semula dan boleh digubah. Ia boleh memudahkan kod dalam beberapa senario dan menjadikannya lebih mudah untuk berfungsi dengan fungsi yang berkongsi hujah biasa.

Kebaikan Karipap:

  1. Aplikasi Fungsi Separa: Currying mendayakan aplikasi separa fungsi, bermakna anda boleh mencipta fungsi khusus dengan membetulkan beberapa hujah dan membiarkan yang lain disediakan kemudian.

  2. Komposisi Fungsi: Anda boleh menggabungkan fungsi kari untuk membina operasi yang lebih kompleks tanpa perlu mengulangi kod.

  3. Kebolehbacaan yang Dipertingkatkan: Currying menjelaskan hujah yang diperlukan oleh fungsi dan membolehkan kod yang lebih bersih dan ringkas.

Contoh Aplikasi Fungsi Separa:

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

const addFive = add(5); // The first function is called with 5
console.log(addFive(3)); // Output: 8 (5 + 3)
Salin selepas log masuk
Salin selepas log masuk

Di sini, multiplyBy10 ialah fungsi khusus yang mempunyai hujah pertama ditetapkan kepada 10. Ini boleh digunakan semula di beberapa tempat.

5. Contoh Praktikal: Karipap dengan Permintaan API

Andaikan anda membuat satu siri permintaan API dengan parameter biasa. Karipap boleh digunakan untuk memudahkan proses ini.

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

const multiplyBy2 = multiply(2);  // First argument is fixed as 2
const multiplyBy2And3 = multiplyBy2(3); // Second argument is fixed as 3
console.log(multiplyBy2And3(4)); // Output: 24 (2 * 3 * 4)
Salin selepas log masuk
Salin selepas log masuk

6. Perbandingan dengan Aplikasi Separa

Semasa kari mengubah fungsi menjadi satu siri fungsi unari, aplikasi separa ialah proses membetulkan beberapa argumen fungsi dan mengembalikan fungsi baharu yang menerima argumen yang tinggal. Karipap adalah salah satu cara untuk mencapai sapuan separa.

Contoh Permohonan Separa:

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args);
    } else {
      return function(...newArgs) {
        return curried(...args, ...newArgs);
      };
    }
  };
}

// Example function
function sum(a, b, c) {
  return a + b + c;
}

const curriedSum = curry(sum);
console.log(curriedSum(1)(2)(3)); // Output: 6
Salin selepas log masuk
Salin selepas log masuk

Di sini, kami menggunakan sebahagian "Hello" pada fungsi salam menggunakan bind().

Kesimpulan

  • Kari ialah teknik yang membenarkan fungsi dipanggil dengan satu argumen pada satu masa, mengembalikan fungsi baharu sehingga semua argumen disediakan.
  • Ia berguna untuk aplikasi separa, komposisi fungsi dan meningkatkan kebolehgunaan semula dan kebolehbacaan kod.
  • Walaupun kari digunakan terutamanya untuk memudahkan fungsi dengan berbilang hujah, ia merupakan alat yang berkuasa dalam pengaturcaraan berfungsi.

Hai, saya Abhay Singh Kathayat!
Saya seorang pembangun tindanan penuh dengan kepakaran dalam kedua-dua teknologi hadapan dan belakang. Saya bekerja dengan pelbagai bahasa pengaturcaraan dan rangka kerja untuk membina aplikasi yang cekap, berskala dan mesra pengguna.
Jangan ragu untuk menghubungi saya melalui e-mel perniagaan saya: kaashshorts28@gmail.com.

Atas ialah kandungan terperinci Menguasai Kari dalam JavaScript: Tingkatkan Kebolehgunaan Semula dan Fleksibiliti Kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan