0Pricing
JavaScript Academy · Pelajaran

Fungsi Murni dan Efek Samping

Tulis fungsi yang dapat diprediksi dan diuji.

Fungsi Murni dan Efek Samping adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 4 pelajaran total.

Yang Membuat Fungsi Murni

Fungsi murni memiliki dua sifat: dengan masukan yang sama, fungsi tersebut selalu mengembalikan keluaran yang sama dan tidak menimbulkan efek samping yang dapat diamati. Fungsi murni bersifat mudah diprediksi dan mudah diuji.

function add(a, b) {
  return a + b;
}
console.log(add(2, 3));
console.log(add(2, 3)); // always 5

Keluaran Deterministik

Kemurnian berarti determinisme. Argumen yang sama harus selalu menghasilkan hasil yang sama, tanpa bergantung pada keadaan tersembunyi, waktu, atau keacakan.

function double(n) {
  return n * 2;
}
console.log(double(10)); // always 20

Apa Itu Efek Samping

Efek samping adalah apa pun yang dilakukan fungsi selain mengembalikan nilai: pencatatan, perubahan keadaan eksternal, penulisan ke penyimpanan, pemanggilan jaringan, atau perubahan pada argumennya.

let total = 0;
function impureAdd(n) {
  total += n;     // side effect: mutates outer state
  return total;
}
console.log(impureAdd(5));
console.log(impureAdd(5)); // 5 then 10, not pure

Bergantung pada Keadaan Eksternal

Membaca keadaan eksternal yang dapat berubah juga merusak kemurnian, karena keluaran berubah meskipun argumennya tetap sama.

let rate = 1.5;
function priceImpure(x) {
  return x * rate; // depends on outside variable
}
console.log(priceImpure(10)); // 15
rate = 2;
console.log(priceImpure(10)); // 20 - different result

Membuatnya Murni

Berikan semua hal yang dibutuhkan fungsi sebagai argumen. Kini hasilnya hanya bergantung pada masukan.

function price(x, rate) {
  return x * rate;
}
console.log(price(10, 1.5)); // 15
console.log(price(10, 2));   // 20

Mengubah Argumen Membuatnya Tidak Murni

Mengubah objek atau larik yang diteruskan ke fungsi merupakan efek samping yang dapat diamati oleh pemanggil. Fungsi murni tidak mengubah masukannya.

function impurePush(arr, x) {
  arr.push(x);   // mutates caller array
  return arr;
}
const a = [1, 2];
impurePush(a, 3);
console.log(a); // [1, 2, 3] - caller changed

Mengembalikan Nilai Baru

Versi murni membuat dan mengembalikan nilai baru, bukan mengubah masukan.

function pureAppend(arr, x) {
  return [...arr, x];
}
const a = [1, 2];
const b = pureAppend(a, 3);
console.log(a); // [1, 2] unchanged
console.log(b); // [1, 2, 3]

Mengapa Kemurnian Membantu

Fungsi murni sangat mudah diuji (tanpa penyiapan dan tiruan), aman untuk disimpan dalam cache (dimemoisasi), serta aman dijalankan dalam urutan apa pun atau secara paralel. Fungsi tersebut membuat penalaran tentang kode menjadi terlokalisasi.

function square(n) { return n * n; }
console.log([1, 2, 3].map(square)); // [1, 4, 9]

Mengisolasi Ketidakmurnian

Anda tidak dapat menghindari semua efek samping; aplikasi harus mencatat, mengambil data, dan menampilkan hasil. Tujuannya adalah mendorong efek ke bagian tepi dan menjaga logika inti tetap murni.

function computeTotal(items) {
  return items.reduce((s, i) => s + i.price, 0);
}
const total = computeTotal([{ price: 5 }, { price: 7 }]);
console.log(total); // 12 - pure core, log at the edge

Transparansi Referensial

Pemanggilan murni dapat digantikan dengan hasilnya tanpa mengubah perilaku. add(2, 3) dapat dipertukarkan dengan 5 di mana pun. Sifat ini disebut transparansi referensial.

function add(a, b) { return a + b; }
const x = add(2, 3) + add(2, 3);
const y = 5 + 5;
console.log(x === y); // true

Mengenali Ketidakmurnian

Perhatikan petunjuk berikut: console, Math.random, Date.now, penugasan ke variabel luar, atau perubahan pada argumen. Semua hal tersebut membuat fungsi menjadi tidak murni.

function pureRoll(seed) {
  return (seed * 1103515245 + 12345) % 100;
}
console.log(pureRoll(42)); // deterministic, testable

Pemeriksaan Singkat

Mengenali fungsi murni.

Ringkasan

Fungsi murni bersifat deterministik dan bebas dari efek samping: tidak ada perubahan eksternal, masukan/keluaran, atau perubahan argumen. Berikan dependensi sebagai argumen dan kembalikan nilai baru, bukan mengubah nilai yang ada. Kemurnian memberikan kemudahan pengujian, memoisasi, transparansi referensial, dan keamanan untuk pemrosesan paralel. Jaga inti kode tetap murni dan dorong efek ke bagian tepi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi Murni dan Efek Samping” gratis?

Ya — teks lengkap “Fungsi Murni dan Efek Samping” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi Murni dan Efek Samping”?

Tulis fungsi yang dapat diprediksi dan diuji. Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Fungsi Murni dan Efek Samping” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Fungsi Murni dan Efek Samping
  2. Transformasi Data Deklaratif
  3. Menghindari Mutasi
  4. Gaya Tanpa Argumen
← Kembali ke JavaScript Academy