Kalau kamu pernah ngoprek ECU mobil atau lagi set suspensi biar handlingnya stabil, pasti ngerti pentingnya kontrol yang konsisten dan bisa diprediksi. Nah, konsep serupa juga berlaku saat kita ngoding, terutama dalam fungsi JavaScript: bagaimana kita jaga supaya fungsi yang kita bikin punya hasil yang stabil dan tanpa efek nggak terduga. Di artikel JS-30 kali ini, kita bahas *pure function* dan *side effect* yang jadi kunci fondasi buat bikin kode yang mudah dipahami dan terprediksi. Yuk masuk ke garasi logika!
Kontrol Stabil: Analogi dari Dunia Otomotif
Bayangin kamu lagi ngatur ECU mesin supaya output tenaga dan torsi bisa stabil setiap kali injak gas. Jika setting ECU berubah-ubah asal-asalan, tenaga yang keluar bisa naik turun dan bikin mobil susah dikontrol. Begitu juga dengan fungsi di pemrograman, kalau fungsi itu menghasilkan output sama untuk input yang sama, kita bisa prediksi hasilnya — mirip seperti setting ECU yang sudah optimal.
Di otomotif, kontrol stabil berarti setiap aksi punya reaksi yang konsisten dan tidak merusak komponen lain. Dalam coding, inilah fungsi murni (*pure functions*): mereka nggak merubah kondisi luar atau “komponen lain” tanpa disengaja.
Pure Function: Fungsi yang Tahu Batasannya
*Pure function* itu fungsi yang kalau diberi input sama, maka outputnya harus selalu sama, tanpa mengubah apapun di luar fungsi itu sendiri. Misalnya, fungsi matematika murni kayak penjumlahan, perkalian, atau konversi suhu.
Ini contohnya fungsi pure yang sederhana:
// Fungsi pure: selalu mengembalikan hasil sama untuk input sama
function hitungPajak(harga, pajakPersen) {
return harga * (pajakPersen / 100);
}
console.log(hitungPajak(100000, 10)); // 10000
console.log(hitungPajak(100000, 10)); // 10000, output stabil
Fungsi `hitungPajak` di atas tidak mengubah variabel apapun di luar dirinya dan hasilnya cuma tergantung parameter masukannya. Jadi gampang buat diuji, dimodifikasi, dan diprediksi kalau kita bikin aplikasi otomotif digital yang butuh akurasi, misalnya hitung biaya service atau pajak kendaraan.
Demo JavaScript: Side Effect dan Dampaknya pada Program
Berbeda dengan pure function, *side effect* adalah efek samping yang mengubah keadaan di luar fungsi atau berinteraksi dengan luar, seperti mengubah variabel global, database, DOM, atau API. Dalam aplikasi otomotif, side effect ibarat modifikasi yang tidak terkontrol—misalnya rem otomatis yang tiba-tiba berinteraksi dengan sistem lain dan bikin mesin error.
Simak contoh sederhana side effect di JavaScript:
let odometer = 50000; // variabel global
// Fungsi dengan side effect: mengubah variabel global odometer
function tambahKilometer(jarak) {
odometer += jarak; // efek samping di variabel luar
return odometer;
}
console.log(tambahKilometer(150)); // 50150
console.log(odometer); // 50150, nilai global berubah tanpa kontrol
Kalau kamu kurang hati-hati, side effect bisa bikin bug susah dilacak. Makanya biasanya kita pisahkan logika pure dan side effect supaya aplikasi tetap aman dan prediktif.
Berikut contoh variasi pure function yang menghindari perubahan state luar tapi menghasilkan state baru:
function tambahKilometerPure(currentOdometer, jarak) {
return currentOdometer + jarak; // tidak menyentuh variabel luar
}
let odometerBaru = tambahKilometerPure(odometer, 200);
console.log(odometerBaru); // 50350
console.log(odometer); // tetap 50150, tidak berubah
Ini menandakan *immutability* atau ketidakberubahan yang banyak dipakai dalam pengembangan software modern.
Masa Depan: Dari Garasi ke Algoritma
Kalau kita terapkan prinsip pure function dan hindari side effect yang tidak dikontrol, aplikasi yang kita buat bisa berjalan dengan lebih prediktif dan mudah di-maintain—mirip merapikan kabel dan komponen mesin mobil supaya semuanya jalan mulus tanpa drama. Dalam dunia otomotif yang makin digital dan terhubung IoT, logika algoritma yang stabil dan bisa diprediksi jadi fondamentale.
Jadi, saat kamu ngulik JavaScript dan algoritma, anggaplah tiap fungsi seperti modul mesin yang harus dikelola dengan teliti supaya performa dan hasilnya maksimal. Semoga artikel ini bantu kamu memahami dasar penting pure function dan side effect supaya ngoding jadi lebih asyik dan handal.
Kalau kamu suka dengan topik ini, terus pantengin JS-30 di Otokreasi.com dan share juga pengalaman kamu soal debugging akibat side effect. Selamat ngulik dan modif kode!



