Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

JavaScript Lanjutan

Pelajaran 9 dari 22

Fungsi, class, dan modul

Closure dan fungsi tingkat tinggi

Setelah pelajaran ini kamu bisa menulis fungsi yang menerima atau mengembalikan fungsi, dan memakai closure untuk menyimpan keadaan.

±13 menitDiperiksa 28 Sep 2026

Materi

Di JavaScript, fungsi adalah nilai. Fungsi bisa disimpan di variabel, dikirim sebagai argumen, dan dikembalikan dari fungsi lain. Fungsi yang menerima atau mengembalikan fungsi disebut fungsi tingkat tinggi. map, filter, dan sort sudah termasuk: ketiganya menerima fungsi yang menentukan apa yang dikerjakan untuk setiap isi.

Ketika sebuah fungsi dibuat di dalam fungsi lain, ia tetap bisa membaca variabel fungsi luarnya walaupun fungsi luar itu sudah selesai berjalan. Gabungan fungsi dengan lingkungan tempat ia dibuat ini disebut closure. Setiap pemanggilan fungsi luar membuat lingkungan baru, sehingga dua fungsi hasil pemanggilan yang berbeda menyimpan variabelnya masing-masing.

function buatPajak(persen) {
  return (harga) => harga + (harga * persen) / 100;
}
const ppn = buatPajak(11);
ppn(200000); // 222000

function buatTabungan() {
  let saldo = 0;
  return (setor) => (saldo += setor);
}
const tabunganA = buatTabungan();
const tabunganB = buatTabungan();
tabunganA(5000); tabunganA(2000); // 7000
tabunganB(1000);                   // 1000, saldo terpisah

Closure dipakai untuk dua hal. Pertama, membuat fungsi yang sudah dikonfigurasi, seperti ppn di atas: tarifnya ditentukan sekali, lalu fungsinya dipakai di banyak tempat. Kedua, menyimpan keadaan yang tidak bisa diubah dari luar: variabel saldo hanya bisa disentuh lewat fungsi yang dikembalikan, bukan ditulis ulang oleh bagian lain program.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke