Rumah hujung hadapan web tutorial js Teknik Pengaturcaraan Fungsional JavaScript untuk Kod yang Lebih Baik

Teknik Pengaturcaraan Fungsional JavaScript untuk Kod yang Lebih Baik

Jan 08, 2025 pm 06:39 PM

owerful JavaScript Functional Programming Techniques for Better Code

Sebagai pengarang terlaris, saya menjemput anda untuk menerokai buku saya di Amazon. Jangan lupa ikuti saya di Medium dan tunjukkan sokongan anda. terima kasih! Sokongan anda bermakna dunia!

Pengaturcaraan berfungsi JavaScript telah merevolusikan cara kami mendekati organisasi kod dan penyelesaian masalah. Dengan menggunakan teknik ini, pembangun boleh mencipta aplikasi yang lebih boleh diselenggara, boleh diuji dan berskala. Mari terokai lapan konsep pengaturcaraan berfungsi yang berkuasa yang boleh meningkatkan pangkalan kod JavaScript anda dengan ketara.

Fungsi tulen membentuk asas pengaturcaraan berfungsi. Ini adalah fungsi yang secara konsisten mengembalikan output yang sama untuk input yang diberikan, tanpa mengubah suai keadaan luaran atau menyebabkan kesan sampingan. Fungsi tulen boleh diramal dan mudah untuk diuji, menjadikannya blok binaan yang ideal untuk aplikasi yang kompleks.

Pertimbangkan contoh fungsi tulen ini:

function addNumbers(a, b) {
  return a + b;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fungsi ini sentiasa mengembalikan jumlah dua hujahnya, tanpa menjejaskan mana-mana keadaan luaran. Sebaliknya, fungsi yang tidak tulen mungkin kelihatan seperti ini:

let total = 0;

function addToTotal(value) {
  total += value;
  return total;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fungsi addToTotal mengubah suai jumlah pembolehubah luaran, menjadikannya tidak tulen dan lebih sukar untuk difikirkan.

Ketidakbolehubahan ialah satu lagi konsep penting dalam pengaturcaraan berfungsi. Daripada mengubah suai data secara langsung, kami membuat salinan baharu dengan perubahan yang dikehendaki. Pendekatan ini menghalang kesan sampingan yang tidak dijangka dan menjadikan kod kami lebih mudah diramal.

Berikut ialah contoh bekerja dengan data tidak berubah:

const originalArray = [1, 2, 3, 4, 5];
const newArray = [...originalArray, 6];

console.log(originalArray); // [1, 2, 3, 4, 5]
console.log(newArray);      // [1, 2, 3, 4, 5, 6]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam kes ini, kami mencipta tatasusunan baharu dengan elemen tambahan dan bukannya mengubah suai tatasusunan asal.

Fungsi tertib tinggi ialah fungsi yang menerima fungsi lain sebagai argumen atau fungsi pengembalian. Mereka membolehkan abstraksi yang kuat dan penggunaan semula kod. Kaedah terbina dalam JavaScript seperti peta, penapis dan pengurangan adalah contoh terbaik bagi fungsi tertib tinggi.

Mari kita lihat fungsi tersuai tertib lebih tinggi:

function repeat(n, action) {
  for (let i = 0; i < n; i++) {
    action(i);
  }
}

repeat(3, console.log);
// Output:
// 0
// 1
// 2
Salin selepas log masuk
Salin selepas log masuk

Fungsi ulangan ini mengambil nombor dan fungsi sebagai argumen, melaksanakan fungsi itu berkali-kali.

Komposisi fungsi membolehkan kami menggabungkan berbilang fungsi untuk mencipta operasi yang lebih kompleks. Teknik ini membantu memecahkan masalah kompleks kepada bahagian yang lebih kecil dan lebih mudah diurus.

Berikut ialah contoh gubahan fungsi:

const double = x => x * 2;
const square = x => x * x;

const doubleAndSquare = x => square(double(x));

console.log(doubleAndSquare(3)); // 36
Salin selepas log masuk
Salin selepas log masuk

Kami juga boleh menggunakan fungsi karang untuk menjadikan proses ini lebih fleksibel:

const compose = (...fns) => x => fns.reduceRight((y, f) => f(y), x);

const doubleAndSquare = compose(square, double);
console.log(doubleAndSquare(3)); // 36
Salin selepas log masuk
Salin selepas log masuk

Kari ialah teknik yang mengubah fungsi dengan berbilang argumen kepada urutan fungsi, masing-masing mengambil satu hujah. Ini membolehkan aplikasi separa fungsi dan boleh membawa kepada lebih banyak kod yang boleh digunakan semula.

Berikut ialah contoh karipap:

function addNumbers(a, b) {
  return a + b;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Rekursi ialah teknik yang berkuasa di mana fungsi memanggil dirinya sendiri untuk menyelesaikan masalah dengan memecahkannya kepada submasalah yang lebih kecil dan serupa. Walaupun tidak eksklusif untuk pengaturcaraan berfungsi, rekursi selalunya diutamakan berbanding gelung imperatif dalam kod berfungsi.

Berikut ialah pelaksanaan rekursif bagi fungsi faktorial:

let total = 0;

function addToTotal(value) {
  total += value;
  return total;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Gaya bebas titik, juga dikenali sebagai pengaturcaraan tersirat, melibatkan fungsi penulisan tanpa menyebut hujahnya secara eksplisit. Gaya ini memfokuskan pada komposisi fungsi dan boleh membawa kepada kod yang lebih ringkas dan boleh dibaca.

Pertimbangkan contoh ini:

const originalArray = [1, 2, 3, 4, 5];
const newArray = [...originalArray, 6];

console.log(originalArray); // [1, 2, 3, 4, 5]
console.log(newArray);      // [1, 2, 3, 4, 5, 6]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Walaupun perbezaannya kelihatan halus, gaya bebas titik boleh menjadi sangat berguna apabila bekerja dengan fungsi tertib tinggi dan komposisi fungsi.

Fungsi dan monad ialah konsep lanjutan dalam pengaturcaraan berfungsi yang menyediakan cara untuk mengendalikan kesan sampingan dan operasi yang kompleks dengan cara yang berfungsi. Functor ialah jenis yang boleh dipetakan, manakala monad ialah jenis yang mentakrifkan cara aplikasi fungsi dan gubahan berfungsi untuk jenis tertentu itu.

Berikut ialah contoh mudah functor dalam JavaScript:

function repeat(n, action) {
  for (let i = 0; i < n; i++) {
    action(i);
  }
}

repeat(3, console.log);
// Output:
// 0
// 1
// 2
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, Maybe ialah functor yang membolehkan kami melakukan operasi dengan selamat pada nilai yang mungkin batal atau tidak ditentukan.

Sekarang kita telah membincangkan lapan teknik pengaturcaraan berfungsi ini, mari kita terokai cara ia boleh digunakan dalam senario dunia sebenar untuk mencipta kod yang lebih bersih dan boleh diselenggara.

Satu kes penggunaan biasa untuk pengaturcaraan berfungsi ialah transformasi data. Katakan kami mempunyai pelbagai objek pengguna dan kami ingin mengekstrak dan memformat maklumat khusus. Kita boleh menggunakan gabungan fungsi tulen, fungsi tertib lebih tinggi dan komposisi fungsi untuk mencapai ini:

const double = x => x * 2;
const square = x => x * x;

const doubleAndSquare = x => square(double(x));

console.log(doubleAndSquare(3)); // 36
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kami telah menggunakan fungsi tulen (getName, huruf besar, tambahGreeting), komposisi fungsi (karang) dan fungsi tertib tinggi (peta) untuk mengubah data kami dengan cara yang bersih dan boleh digunakan semula.

Satu lagi aplikasi berkuasa pengaturcaraan berfungsi adalah dalam pengurusan negeri. Dengan menganggap keadaan sebagai tidak berubah dan menggunakan fungsi tulen untuk mengira keadaan baharu, kami boleh mencipta aplikasi yang lebih boleh diramal dan lebih mudah untuk nyahpepijat. Berikut ialah contoh mudah pembilang yang dilaksanakan menggunakan prinsip kefungsian:

const compose = (...fns) => x => fns.reduceRight((y, f) => f(y), x);

const doubleAndSquare = compose(square, double);
console.log(doubleAndSquare(3)); // 36
Salin selepas log masuk
Salin selepas log masuk

Corak kemas kini keadaan tidak berubah dan fungsi tulen untuk pengiraan keadaan baharu ini merupakan asas kepada banyak perpustakaan pengurusan negeri moden, seperti Redux.

Pengaturcaraan fungsian juga boleh memudahkan operasi tak segerak. Dengan menggunakan functors dan monad, kami boleh mengendalikan kod tak segerak dengan cara yang lebih boleh diramal dan boleh digubah. Berikut ialah contoh menggunakan monad Tugas mudah:

function addNumbers(a, b) {
  return a + b;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kami telah mencipta monad Tugas yang membolehkan kami merantai operasi tak segerak dan mengendalikan ralat dengan cara yang berfungsi. Pendekatan ini boleh membawa kepada kod tak segerak yang lebih mudah dibaca dan boleh diselenggara berbanding dengan panggilan balik tradisional atau pendekatan berasaskan janji.

Teknik pengaturcaraan fungsional juga boleh digunakan untuk manipulasi DOM dan pengendalian acara dalam pembangunan bahagian hadapan. Dengan menganggap DOM sebagai struktur data tidak berubah dan menggunakan fungsi tulen untuk mengira keadaan DOM baharu, kami boleh mencipta kod UI yang lebih boleh diramal dan lebih mudah untuk diuji.

Berikut ialah contoh mudah pendekatan berfungsi untuk mengemas kini kaunter dalam DOM:

let total = 0;

function addToTotal(value) {
  total += value;
  return total;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kami telah menggunakan fungsi tulen untuk mengemas kini keadaan dan memaparkan UI, menjadikan kod kami lebih mudah diramal dan lebih mudah untuk diuji.

Teknik pengaturcaraan fungsional juga boleh digunakan untuk pengendalian ralat. Daripada membuang dan menangkap pengecualian, yang boleh membawa kepada aliran kawalan yang tidak dapat diramalkan, kita boleh menggunakan fungsi seperti Sama ada atau Hasil untuk mewakili pengiraan yang mungkin gagal:

const originalArray = [1, 2, 3, 4, 5];
const newArray = [...originalArray, 6];

console.log(originalArray); // [1, 2, 3, 4, 5]
console.log(newArray);      // [1, 2, 3, 4, 5, 6]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pendekatan ini membolehkan kami mengendalikan ralat dengan cara yang lebih boleh diramal dan boleh digubah, tanpa bergantung pada pengendalian pengecualian.

Kesimpulannya, teknik pengaturcaraan berfungsi menawarkan alat yang berkuasa untuk mencipta kod JavaScript yang lebih bersih dan boleh diselenggara. Dengan menerima konsep seperti fungsi tulen, kebolehubahan, fungsi tertib tinggi dan komposisi fungsi, kami boleh menulis kod yang lebih mudah difahami, diuji dan nyahpepijat. Konsep lanjutan seperti kari, rekursi, gaya bebas titik dan functors menyediakan lebih banyak cara untuk menstruktur kod kami untuk fleksibiliti maksimum dan kebolehgunaan semula.

Walaupun mungkin mengambil sedikit masa untuk menyesuaikan diri dengan paradigma pengaturcaraan berfungsi, faedah dari segi kualiti kod dan produktiviti pembangun adalah ketara. Apabila anda memasukkan teknik ini ke dalam projek JavaScript anda, anda mungkin akan mendapati bahawa kod anda menjadi lebih modular, lebih mudah untuk difikirkan dan kurang terdedah kepada pepijat. Perkara utama adalah untuk memulakan secara kecil-kecilan, memperkenalkan konsep berfungsi secara beransur-ansur ke dalam pangkalan kod anda dan membina teknik yang lebih maju apabila anda selesa dengan asasnya.

Ingat, pengaturcaraan berfungsi bukanlah cadangan semua-atau-tiada. Anda boleh mulakan dengan memperkenalkan fungsi tulen dan kebolehubahan ke dalam pangkalan kod sedia ada anda, dan secara beransur-ansur menggunakan teknik yang lebih maju mengikut kesesuaian anda. Matlamatnya ialah untuk menulis kod yang lebih bersih, lebih boleh diselenggara dan pengaturcaraan berfungsi menyediakan set alat yang berkuasa untuk mencapai matlamat tersebut.


101 Buku

101 Buku ialah syarikat penerbitan dipacu AI yang diasaskan bersama oleh pengarang Aarav Joshi. Dengan memanfaatkan teknologi AI termaju, kami memastikan kos penerbitan kami sangat rendah—sesetengah buku berharga serendah $4—menjadikan pengetahuan berkualiti boleh diakses oleh semua orang.

Lihat buku kami Kod Bersih Golang tersedia di Amazon.

Nantikan kemas kini dan berita menarik. Apabila membeli-belah untuk buku, cari Aarav Joshi untuk mencari lebih banyak tajuk kami. Gunakan pautan yang disediakan untuk menikmati diskaun istimewa!

Ciptaan Kami

Pastikan anda melihat ciptaan kami:

Pusat Pelabur | Pelabur Central Spanish | Pelabur Jerman Tengah | Hidup Pintar | Epos & Gema | Misteri Membingungkan | Hindutva | Pembangunan Elit | Sekolah JS


Kami berada di Medium

Tech Koala Insights | Dunia Epok & Gema | Medium Pusat Pelabur | Medium Misteri Membingungkan | Sains & Zaman Sederhana | Hindutva Moden

Atas ialah kandungan terperinci Teknik Pengaturcaraan Fungsional JavaScript untuk Kod yang Lebih Baik. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

periksa jQuery jika tarikh sah

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

jQuery mendapatkan padding/margin elemen

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

10 Tab Accordion JQuery

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

10 patut diperiksa plugin jQuery

HTTP Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

jQuery tambah bar scroll ke div

See all articles