JavaScript ialah bahasa yang menyokong pengaturcaraan berfungsi Idea teras pengaturcaraan berfungsi adalah untuk memisahkan data dan fungsi, menekankan kebolehubahan dan kekurangan kesan sampingan program. Pengaturcaraan fungsional mempunyai sintaks yang ringkas dan mempunyai kelebihan besar dalam organisasi dan ujian kod. Artikel ini akan memperkenalkan beberapa aplikasi lanjutan pengaturcaraan berfungsi dalam JavaScript.
Dalam pengaturcaraan berfungsi, salah satu konsep paling asas ialah ketulenan fungsi Fungsi tulen merujuk kepada fungsi yang mempunyai input yang sama pada bila-bila masa parameter akan mendapat hasil yang sama tanpa sebarang kesan sampingan. Kelebihan fungsi jenis ini ialah ia mudah dicache dalam persekitaran serentak, dan ia juga membantu untuk mengendalikan rekursi dan mengelakkan pengiraan berulang yang tidak perlu. Penambahan boleh dilaksanakan melalui fungsi berikut:
function add(a, b) { return a + b; }
Fungsi ini ialah fungsi tulen biasa. Kerana ia akan mempunyai output hanya di bawah input tertentu. Walau bagaimanapun, kesan sampingan yang biasa ialah fungsi mempengaruhi persekitaran di mana ia berada, seperti mengubah suai nilai beberapa pembolehubah atau memanggil fungsi luaran. Oleh itu, dalam pengaturcaraan berfungsi, kesan sampingan ini harus dielakkan seboleh-bolehnya, iaitu fungsi tulen harus ditulis sebanyak mungkin.
Fungsi tertib tinggi ialah fungsi yang menerima satu atau lebih fungsi sebagai parameter atau fungsi pulangan sebagai nilai pulangan. Fungsi jenis ini boleh merealisasikan keperluan dengan lebih fleksibel dan mengurangkan pertindihan kod. Fungsi berikut ialah contoh fungsi tertib lebih tinggi, yang boleh menerima fungsi sebagai parameter dan mengembalikan fungsi baharu:
function compose(fn1, fn2) { return function(value) { return fn1(fn2(value)); }; }
Fungsi ini mengembalikan fungsi baharu, yang akan memanggil fn2 dahulu dan kemudian menghantar keputusan Berikan fn1 sebagai parameter. Anda boleh menggunakan fungsi ini untuk melaksanakan gabungan berbilang fungsi, seperti yang ditunjukkan di bawah:
function add10(val) { return val + 10; } function square(val) { return val * val; } var result = compose(add10, square)(5); console.log(result); // 35 (5 + 10) * (5 + 10)
Dalam contoh ini, kami menambah10 dan segi empat sama pada fungsi karang. Kami akan menambah fungsi baharu ini . Fungsi diberikan nilai 5. Akhirnya, keputusan yang kami jangkakan telah dikembalikan.
Karipap ialah teknik yang mengubah fungsi menjadi bentuk yang menerima hanya satu hujah pada satu masa. Menukar nilai fungsi berbilang parameter kepada rantai fungsi parameter tunggal juga boleh dikatakan sebagai sejenis "prapemprosesan" fungsi, supaya ia boleh digunakan dengan lebih fleksibel. Fungsi berikut boleh melaksanakan jumlah berbilang nilai:
function add(a, b, c) { return a + b + c; } add(1, 2, 3); // 6
Dan fungsi ini boleh dilaksanakan langkah demi langkah melalui kari:
function add(a) { return function(b) { return function(c) { return a + b + c; }; }; } add(1)(2)(3); // 6
Seperti yang anda lihat, melalui kari, fungsi tambah Selepas pertama menerima parameter pertama, fungsi yang menerima parameter kedua dikembalikan. Sekarang, kita boleh memasukkan parameter satu demi satu, mengembalikan fungsi baharu setiap kali, sehingga akhirnya fungsi itu dikembalikan.
Gabungan fungsi adalah untuk menggabungkan dua atau lebih fungsi bersama-sama untuk menghasilkan fungsi baharu ini akan memanggil fungsi yang diluluskan dari kiri ke kanan fungsi dan kemudian menggabungkan hasilnya bersama-sama. Dalam pengaturcaraan berfungsi, komposisi fungsi adalah cara paling berkesan untuk menggabungkan fungsi kecil kepada fungsi besar. Kita boleh menggabungkan berbilang fungsi menggunakan fungsi karang. Berikut ialah contoh gubahan fungsi:
function add(a) { return a + 10; } function multiply(b) { return b * 2; } const addingAndMultiplying = compose(multiply, add); addingAndMultiplying (10); // 40
Dalam contoh ini, kita mula-mula mentakrifkan dua fungsi mudah tambah dan darab, dan kemudian gunakan fungsi gubahan untuk menggabungkannya menjadi fungsi baharu. Fungsi baharu ini boleh memanggil berbilang fungsi sekaligus dan menggabungkan hasilnya bersama-sama. Apabila kita menghantar 10 kepada fungsi addAndMultiplying, ia mula-mula memanggil fungsi tambah, yang menambah 10 hingga 10, memberikan kita 20. Seterusnya, ia memberikan hasil kepada fungsi darab, yang mendarab 20 dengan 2, memberikan kita hasil akhir 40.
Gabungan karipap fungsi dan gubahan sering digunakan dalam pengaturcaraan berfungsi. Sebagai contoh, kita boleh mentakrifkan dan menggabungkan beberapa fungsi untuk melengkapkan beberapa operasi:
function add(a) { return function(b) { return a + b; }; } function multiply(a) { return function(b) { return a * b; }; } function subtract(a) { return function(b) { return b - a; }; } function divide(a) { return function(b) { return b / a; }; } const discount = compose(subtract(10), multiply(0.1), add(20), divide(2)); discount(50); // 5
Dalam contoh ini, kita mula-mula mentakrifkan empat fungsi mudah tambah, darab, tolak dan bahagi, dan gunakan kari fungsi kepada Mereka telah diubah. Menggunakan karang penggabung fungsi, kita boleh mengaitkan semua operasi dan mendapatkan hasil akhir. Contoh ini menunjukkan cara menggabungkan berbilang fungsi mudah menjadi satu fungsi menggunakan kari dan gubahan.
Kesimpulan
Artikel ini memperkenalkan beberapa aplikasi lanjutan pengaturcaraan berfungsi dalam JavaScript, seperti fungsi tulen, fungsi tertib lebih tinggi, kari, gubahan fungsi dan gubahan fungsi kari. Konsep ini adalah berdasarkan beberapa idea teras pengaturcaraan berfungsi, seperti ketulenan dan kebolehubah fungsi. Teknik ini boleh membantu menulis kod yang lebih fleksibel, boleh digunakan semula dan mudah diuji. Jika anda berminat untuk mengetahui lebih lanjut tentang pengaturcaraan berfungsi, anda boleh menyemak dokumentasi untuk Ramda.js, perpustakaan yang menyediakan pelbagai alatan pengaturcaraan berfungsi.
Atas ialah kandungan terperinci Aplikasi lanjutan pengaturcaraan berfungsi dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!