Lewati ke isi

๐Ÿ” Pemrograman Fungsional di JavaScript

Pemrograman fungsional (Functional Programming/FP) adalah paradigma pemrograman yang berfokus pada penggunaan fungsi murni, imutabilitas data, dan penghindaran efek samping.


๐Ÿ“ Ciri-ciri Pemrograman Fungsional

  • Fungsi murni (pure function): tidak mengubah data di luar dirinya dan selalu mengembalikan hasil yang sama untuk input yang sama.
  • Imutabilitas: data tidak diubah setelah dibuat.
  • Fungsi sebagai first-class citizen: fungsi bisa disimpan dalam variabel, dikirim sebagai parameter, atau dikembalikan dari fungsi lain.
  • Deklaratif, bukan imperatif: fokus pada apa yang dilakukan, bukan bagaimana.

๐Ÿ” Contoh Fungsi Murni

// Fungsi murni
function tambah(a, b) {
  return a + b;
}

// Bukan fungsi murni (karena memodifikasi variabel di luar dirinya)
let total = 0;
function tambahGlobal(a) {
  total += a;
}
````

---

## ๐Ÿงฐ Higher-Order Function

Fungsi yang menerima fungsi lain sebagai argumen atau mengembalikan fungsi lain.

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

repeat(() => console.log("Halo!"), 3);

๐Ÿงผ Method Array: map, filter, reduce

map: transformasi elemen

const angka = [1, 2, 3];
const kuadrat = angka.map(n => n * n);
console.log(kuadrat); // [1, 4, 9]

filter: menyaring elemen

const ganjil = angka.filter(n => n % 2 === 1);
console.log(ganjil); // [1, 3]

reduce: akumulasi elemen

const total = angka.reduce((acc, cur) => acc + cur, 0);
console.log(total); // 6

๐Ÿ”„ Imutabilitas

Gunakan spread operator atau metode Array.prototype untuk menjaga data tetap tidak berubah:

const buah = ['apel', 'jeruk'];
const buahBaru = [...buah, 'mangga']; // Tidak mengubah array asli

๐Ÿงช Contoh chaining FP

const hasil = [1, 2, 3, 4, 5]
  .map(n => n * 2)
  .filter(n => n > 5)
  .reduce((a, b) => a + b, 0);

console.log(hasil); // 18

๐Ÿ“Ž Kesimpulan

Pemrograman fungsional membantu membuat kode lebih modular, bersih, dan mudah diuji. JavaScript bukan bahasa FP murni, tetapi sangat mendukung gaya ini melalui map, filter, reduce, dan first-class function.

```