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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
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)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1269
29
Tutorial C#
1249
24
Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

See all articles