Rumah > hujung hadapan web > tutorial js > Bagaimana saya melaksanakan kari dalam javascript?

Bagaimana saya melaksanakan kari dalam javascript?

James Robert Taylor
Lepaskan: 2025-03-12 16:28:15
asal
317 orang telah melayarinya

Bagaimana saya melaksanakan kari di javascript?

Currying dalam JavaScript melibatkan mengubah fungsi yang mengambil pelbagai argumen ke dalam urutan fungsi yang masing -masing mengambil satu hujah. Ini dicapai dengan mengembalikan fungsi baru dari fungsi asal, yang kemudiannya mengambil hujah seterusnya, dan sebagainya, sehingga semua argumen dibekalkan. Fungsi akhir dalam rantai kemudian melakukan pengiraan sebenar.

Terdapat beberapa cara untuk melaksanakan kari di JavaScript. Berikut adalah dua pendekatan biasa:

1. Menggunakan fungsi bersarang:

Ini adalah pendekatan mudah yang menggunakan fungsi bersarang untuk mengendalikan pengambilan hujah berurutan.

 <code class="javascript">function curry(fn) { return function curried(...args) { if (args.length >= fn.length) { return fn(...args); } else { return (...nextArgs) => curried(...args, ...nextArgs); } }; } // Example usage: function add(a, b, c) { return abc; } const curriedAdd = curry(add); console.log(curriedAdd(1)(2)(3)); // Output: 6 console.log(curriedAdd(1,2)(3)); // Output: 6 console.log(curriedAdd(1)(2,3)); // Output: 6 console.log(curriedAdd(1,2,3)); // Output: 6</code>
Salin selepas log masuk

2. Menggunakan reduce :

Kaedah ini memanfaatkan fungsi reduce secara teratur menggunakan hujah -hujah. Ia lebih ringkas tetapi mungkin kurang dibaca untuk pemula.

 <code class="javascript">function curryReduce(fn) { const arity = fn.length; return (...args) => { if (args.length >= arity) { return fn(...args); } else { return (...nextArgs) => curryReduce(fn)(...args, ...nextArgs); } }; } // Example usage (same add function as above) const curriedAddReduce = curryReduce(add); console.log(curriedAddReduce(1)(2)(3)); // Output: 6</code>
Salin selepas log masuk

Kedua-dua kaedah ini mencapai hasil yang sama: mengubah fungsi multi-argument ke dalam versi kari. Pilihan bergantung kepada keutamaan peribadi dan gaya kod. Pendekatan fungsi bersarang umumnya dianggap lebih mudah difahami.

Apakah faedah menggunakan kari dalam kod JavaScript saya?

Currying menawarkan beberapa kelebihan:

  • Kod yang lebih baik boleh digunakan semula: Fungsi kari boleh digunakan sebahagiannya, mewujudkan fungsi khusus yang disesuaikan dengan keperluan khusus. Sebagai contoh, jika anda mempunyai fungsi untuk mengira kawasan segi empat tepat, anda boleh mengekangnya untuk membuat fungsi yang mengira kawasan untuk segi empat tepat dengan lebar tertentu, menjadikannya boleh diguna semula untuk pelbagai ketinggian.
  • Kebolehbacaan dan kebolehkerjaan yang dipertingkatkan (dibincangkan lebih lanjut di bawah): Memecahkan fungsi kompleks ke dalam unit yang lebih kecil, lebih mudah diurus dapat meningkatkan kejelasan kod.
  • Peningkatan Fleksibiliti: Kari membolehkan anda melambatkan penilaian hujah, yang berpotensi mengoptimumkan prestasi dalam senario tertentu. Sebagai contoh, anda boleh mengelakkan perhitungan yang tidak perlu sehingga semua argumen tersedia.
  • Komposiliti yang lebih baik: Fungsi Curried dikarang dengan baik bersama -sama, membolehkan anda berfungsi dengan lebih mudah dan membuat logik kompleks dari blok bangunan yang lebih mudah.

Bolehkah kari meningkatkan kebolehbacaan dan mengekalkan fungsi JavaScript saya?

Ya, kari dapat meningkatkan kebolehbacaan dan kebolehkerjaan fungsi JavaScript anda, terutama dalam senario dengan pelbagai argumen. Dengan memecahkan fungsi yang besar ke dalam fungsi argumen yang lebih kecil, anda meningkatkan kejelasan kod dan mengurangkan kerumitan. Ini menjadikannya lebih mudah untuk memahami, menguji, dan debug bahagian individu fungsi. Modulariti yang lebih baik juga menyumbang kepada pemeliharaan yang lebih baik, kerana perubahan kepada satu bahagian fungsi kari kurang berkemungkinan memberi kesan kepada bahagian lain. Modulariti ini membolehkan refactoring yang lebih mudah dan mengurangkan risiko memperkenalkan pepijat. Selain itu, keupayaan untuk sebahagiannya menggunakan hujah memudahkan ujian dengan membolehkan anda menguji bahagian individu fungsi secara bebas.

Bagaimanakah kari berbeza dari aplikasi separa dalam JavaScript?

Walaupun berkait rapat, aplikasi kari dan separa adalah konsep yang berbeza:

  • Currying: Mengubah fungsi yang mengambil pelbagai hujah ke dalam urutan fungsi yang masing -masing mengambil satu hujah. Ia sentiasa mengembalikan fungsi sehingga semua argumen dibekalkan.
  • Permohonan separa: memohon beberapa, tetapi tidak semua, argumen ke fungsi, mengembalikan fungsi baru yang mengambil argumen yang tinggal. Ia tidak semestinya memerlukan fungsi argumen tunggal pada setiap langkah.

Perbezaan utama terletak pada bilangan argumen setiap langkah yang diterima. Currying sentiasa melibatkan fungsi argumen tunggal pada setiap langkah. Permohonan separa boleh menerima pelbagai argumen pada satu langkah. Currying adalah bentuk tertentu aplikasi separa. Anda boleh memikirkan kari sebagai aplikasi lengkap aplikasi separa di mana setiap langkah hanya mengambil satu hujah. Aplikasi separa adalah konsep yang lebih umum yang merangkumi kari sebagai kes khas.

Atas ialah kandungan terperinci Bagaimana saya melaksanakan kari dalam javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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