Dengan artikel ini, kita akan mempelajari apa itu fungsi murni/tidak murni dan perbedaannya dalam JavaScript. Mari selami..

Apa itu fungsi?

Di lautan JavaScript, fungsi adalah elemen penting untuk membuat aplikasi yang kompleks dan interaktif.

Salah satu penggunaan fungsi yang paling umum adalah pemetaan, yang mana fungsi tersebut mengambil nilai masukan dan menghasilkan nilai keluaran yang sesuai. Hal ini memungkinkan transformasi dan manipulasi data, yang sangat penting dalam menciptakan pengalaman pengguna yang dinamis.

Apa yang dimaksud dengan fungsi murni?

Fungsi murni adalah fungsi yang nilai kembaliannya hanya ditentukan oleh argumennya tanpa efek samping apa pun. Katakanlah, jika Anda memanggil suatu fungsi dengan argumen yang sama n berapa kali dan n jumlah tempat dalam aplikasi maka fungsi tersebut akan selalu mengembalikan nilai yang sama. Fungsi murni tidak mengubah keadaan eksternal apa pun, seperti variabel atau objek di luar fungsi. Mereka hanya menggunakan argumen masukan untuk melakukan perhitungan dan mengembalikan hasilnya.

Untuk menunjukkan kepada Anda apa yang saya maksud..

Fungsi di bawah ini mengambil dua angka, a dan b, sebagai argumen masukan dan mengembalikan jumlahnya. Fungsi ini merupakan fungsi murni karena selalu menghasilkan keluaran yang sama untuk masukan yang sama dan tidak mempunyai efek samping apapun.

function add(a, b) {
  return a + b;
}

Apa yang dimaksud dengan fungsi tidak murni?

Fungsi tidak murni adalah suatu jenis fungsi, jika diberi masukan yang sama, dapat menghasilkan keluaran yang berbeda pada waktu yang berbeda. Hal ini karena fungsi yang tidak murni dapat bergantung pada faktor eksternal seperti perubahan variabel global atau fungsi lainnya, yang memengaruhi perilaku dan keluarannya.

Fungsi di bawah ini memodifikasi penghitung variabel eksternal dengan meningkatkan nilainya satu kali setiap kali dipanggil. Artinya memiliki efek samping dan bukan merupakan fungsi murni.

let counter = 0;

function increment() {
  counter++;
  return counter;
}

Mengapa fungsi murni bermanfaat?

Fungsi murni memiliki beberapa keunggulan dibandingkan fungsi tidak murni:

1) Prediktabilitas
Karena fungsi murni selalu menghasilkan keluaran yang sama untuk masukan tertentu, fungsi murni dapat diprediksi dan mudah untuk dipikirkan. Lebih mudah untuk menguji dan men-debug serta mengurangi kemungkinan perilaku tak terduga dalam kode Anda.

2) Dapat digunakan kembali
Fungsi murni bersifat modular dan mandiri, artinya fungsi tersebut dapat digunakan kembali di berbagai bagian basis kode Anda tanpa memengaruhi bagian lainnya. Ini dapat menghemat waktu dan mengurangi jumlah kode yang perlu Anda tulis.

3) Paralelisasi
Karena fungsi murni tidak mengubah keadaan eksternal, fungsi tersebut dapat dijalankan secara paralel tanpa mengkhawatirkan kondisi balapan atau masalah sinkronisasi lainnya. Hal ini dapat menghasilkan kode yang lebih cepat dan efisien.

Bagaimana cara membuat fungsi murni di JavaScript?

1) Gunakan hanya argumen masukan
Fungsi murni sebaiknya hanya menggunakan argumen masukannya untuk melakukan penghitungan dan mengembalikan hasilnya. Mereka tidak boleh mengubah keadaan eksternal apa pun atau bergantung pada variabel eksternal.

2) Hindari efek samping
Fungsi murni tidak boleh memiliki efek samping apa pun, seperti memodifikasi variabel atau objek eksternal. Mereka seharusnya hanya mengembalikan nilai berdasarkan argumen masukan.

3) Hindari keadaan global
Fungsi murni harus menghindari penggunaan keadaan global, seperti variabel atau objek global. Hal ini dapat membuat kode Anda kurang dapat diprediksi dan lebih sulit untuk di-debug.

4) Mengembalikan nilai
Fungsi murni harus selalu mengembalikan nilai berdasarkan argumen masukan. Mereka tidak boleh bergantung pada variabel atau objek eksternal untuk menghasilkan outputnya.

Fungsi Murni vs Tidak Murni

Fungsi murni bawaan dalam JavaScript:

Math.abs(): Mengembalikan nilai absolut suatu angka.

Math.ceil(): Mengembalikan bilangan bulat terkecil yang lebih besar dari atau sama dengan bilangan tertentu.

Math.floor(): Mengembalikan bilangan bulat terbesar yang kurang dari atau sama dengan bilangan tertentu.

Math.max(): Mengembalikan nilai maksimum dari serangkaian angka.

Math.min(): Mengembalikan nilai minimum dari sekumpulan angka.

Math.round(): Mengembalikan bilangan bulat terdekat ke angka tertentu.

Math.sqrt(): Mengembalikan akar kuadrat dari angka tertentu.

parseInt(): Mengonversi string menjadi bilangan bulat.

parseFloat(): Mengonversi string menjadi angka floating point.

JSON.parse(): Mengonversi string JSON menjadi objek JavaScript.

Array.prototype.concat(): Mengembalikan array baru yang berisi elemen array asli ditambah elemen tambahan apa pun yang diteruskan sebagai argumen.

Array.prototype.slice(): Mengembalikan array baru yang berisi sebagian dari array asli, yang ditentukan oleh indeks awal dan akhir.

Array.prototype.map(): Mengembalikan array baru yang merupakan hasil pemanggilan fungsi yang disediakan pada setiap elemen array asli.

Array.prototype.filter(): Mengembalikan array baru yang hanya berisi elemen array asli yang memenuhi fungsi pengujian yang disediakan.

Array.prototype.reduce(): Mengembalikan nilai tunggal yang merupakan hasil penerapan fungsi yang disediakan ke setiap elemen array.

String.prototype.toUpperCase(): Mengembalikan string baru yang berisi string asli dalam huruf besar semua.

String.prototype.toLowerCase(): Mengembalikan string baru yang berisi string asli dalam huruf kecil semua.

Fungsi tidak murni bawaan dalam JavaScript:

Math.random(): Mengembalikan angka acak antara 0 dan 1. Fungsi ini bergantung pada keadaan eksternal yang merupakan keadaan terkini dari penghasil angka acak dan keluarannya berubah setiap kali dipanggil.

Tanggal.sekarang(): Mengembalikan stempel waktu saat ini yang merupakan jumlah milidetik yang telah berlalu sejak January 1, 1970. Fungsi ini bergantung pada keadaan eksternal yaitu waktu saat ini dan keluarannya berubah setiap kali dipanggil.

console.log(): Menulis pesan ke konsol. Itu tidak mengembalikan nilai tetapi memiliki efek samping mencatat informasi ke konsol.

setTimeout(): Menjalankan fungsi setelah penundaan tertentu yang ditentukan dalam milidetik. Fungsi ini memiliki efek samping berupa penjadwalan suatu fungsi untuk dijalankan di masa mendatang.

setInterval(): Menjalankan fungsi pada interval tertentu yang ditentukan dalam milidetik. Fungsi ini memiliki efek samping berupa penjadwalan suatu fungsi untuk dieksekusi berulang kali pada interval yang tetap.

document.write(): Menulis konten HTML ke dokumen. Itu tidak mengembalikan nilai tetapi memiliki efek samping memodifikasi dokumen.

Math.floor(Math.random() * (max — min + 1) + min): Mengembalikan bilangan bulat acak antara rentang tertentu. Fungsi ini bergantung pada keadaan eksternal yang merupakan keadaan terkini dari generator bilangan acak dan keluarannya berubah setiap kali dipanggil.

Math.pow(): Mengembalikan hasil menaikkan angka ke pangkat tertentu. Meskipun fungsi ini murni secara matematis, namun dapat mengakibatkan kesalahan pembulatan floating point yang dapat membuat keluarannya tidak murni.

❤ Motivasi:

🍀Dukungan

Mohon pertimbangkan untuk mengikuti dan mendukung kami dengan berlangganan saluran kami. Dukungan Anda sangat kami hargai dan akan membantu kami terus membuat konten untuk Anda nikmati. Terima kasih sebelumnya atas dukungan Anda!

YouTube
Discord
GitHub