Mari kita berpura -pura bahwa kita akan menyelesaikan tugas sekarang: Tulis kode javascript sebanyak mungkin sesuai dengan prinsip -prinsip bahasa fungsional.
Seri artikel berikutnya adalah membiarkan Anda dan saya memulai perjalanan ini. Pertama, kami perlu memperbaiki beberapa konsep kesalahan bahasa fungsional yang mungkin ada dalam pikiran Anda.
Rumus fungsional dalam bahasa JS sangat disalahpahami.
Jelas, ada cukup banyak pengembang yang ingin menggunakan paradigma fungsional JavaScript setiap hari. Saya akan mengatakan ada porsi yang lebih besar dari pengembang JavaScript yang tidak benar -benar memahami hal -hal ini.
Saya pikir alasan untuk ini adalah bahwa sebagian besar bahasa pengembangan yang digunakan di server web berasal dari C, dan semua orang tahu bahwa bahasa -bahasa ini bukan bahasa fungsional.
Umumnya ada dua tingkat kebingungan. Lapisan pertama adalah tentang penggunaan dalam contoh berikut, yang merupakan penggunaan yang sangat umum dalam jQuery:
$ (".. Masuk"). Klik (Fungsi (Event) {$ ("#SignupModal"). Show (); Event.PreventDefault ();});Dalam kode di atas: Kami melewati fungsi anonim sebagai parameter, yang merupakan fungsi callback terkenal di JavaScript. Apakah fungsi -fungsi ini akan dipanggil? Sama sekali tidak!
Contoh di atas menggambarkan fitur utama dari bahasa fungsional: fungsi adalah parameter. Di sisi lain, contoh ini melanggar hampir semua paradigma pemrograman fungsional yang dapat dilanggar hanya menggunakan tiga baris kode.
Tingkat keraguan kedua lebih halus. Lihat ini: Hanya beberapa pengembang JS modis yang melihat diri mereka seperti ini:
Nah, itu sangat bagus! Tetapi saya sudah memiliki pemahaman lengkap tentang pemrograman fungsional, dan saya menggunakan underscore.js di semua proyek saya.
Underscore.js adalah perpustakaan JavaScript yang sangat terkenal dan ada di mana -mana. Misalnya: Misalkan saya memiliki satu set kata dan saya membutuhkan dua huruf pertama untuk setiap kata. Ini sangat sederhana untuk ditulis dengan underscore.js:
var firstTwoletters = function (word) {return _.map (Words, function (word) {return _.first (word, 2);});};Lihatlah contoh JavaScript ini. Saya menggunakan fungsi yang sangat indah dan praktis dalam rumus fungsi: _.map dan _.first. Apa pendapat Anda tentang ini?
Meskipun fungsi seperti underscore.js dan _.map keduanya adalah paradigma fungsional yang berguna, menyatukan hal -hal ini seperti ini dalam contoh ini masih membuat saya sedikit sulit untuk dipahami. Apakah kita benar -benar perlu melakukan ini?
Jika kita mulai berpikir tentang bagaimana menjadi lebih "fungsional", mungkin kita dapat menulis ulang contoh di atas seperti ini:
// ... sedikit magicvar firstTwoletters = peta (pertama (2));
Jika Anda memikirkannya dengan cermat, baris kode ini memiliki efek yang sama dengan 5 baris di atas. Banyak kata hanyalah parameter atau placeholder. Logika sebenarnya adalah menggabungkan fungsi peta, fungsi pertama dan konstanta 2 dengan cara yang bermakna.
Beberapa orang mungkin bertanya -tanya: Apa keajaiban dalam contoh ini? Lagi pula, agak seperti membual untuk mengatakan bahwa ada contoh yang ajaib, bukan?
Saya berencana menggunakan dua artikel berikutnya untuk menjelaskan apa contoh di atas ajaib. Jika Anda penasaran, Anda dapat melanjutkan membaca.
Serangkaian blog ini adalah membantu Anda bagaimana menerapkan keindahan pemrograman fungsional ke kode JavaScript Anda.
Pada bagian selanjutnya, saya akan membahas berbagai elemen fungsional dan non-fungsional dalam bahasa JavaScript. Dengan pengetahuan ini, kita secara perlahan dapat membentuk sistem pemrograman fungsional yang lengkap di otak kita dengan mengintegrasikan elemen -elemen ini bersama -sama dan memahami kinerja mereka dalam JavaScript.