Pure Function adalah sebuah function yang jika diberi argumen yang sama maka akan menghasilkan output yang sama. Lebih simple, mudah diprediksi, dan mudah untuk di test daripada impure function. Kamu tidak boleh mengacu pada variable di luar scope function untuk melakukan kalkulasi didalam pure function. Lebih baik mengacu pada argumen dan variable didalam scope function tersebut.
Ini adalah contoh pure function :
function sum(a, b) {
return a + b;
}
sum(1, 2); // Selalu menghasilkan 3 (1 + 2 = 3)
sum(5, 1); // Selalu menghasilkan 6 (5 + 1 = 6)
Kriteria dari pure function adalah :
- Jika diberi argument yang sama, maka akan menghasilkan output yang sama.
- Tanpa side effects.
Side effects itu seperti :
- Mengubah dan mengacu pada variable diluar scope function bersangkutan
- Melakukan network request
- Menampilkan sesuatu di console
- Memanipulasi DOM
Jika tidak memenuhi kriteria diatas, Itu bisa dipastikan sebagai impure function. Impure function tidak mudah diprediksi, Kamu tidak bisa memperkirakan output nya secara pasti. Jika kamu memanggil impure function didalam sebuah function, function tersebut menjadi impure.
Ini adalah contoh dari impure function :
// Bisakah kamu menebak output dari function ini ?
Math.random();
let i = 0;
// Function ini mengubah dan mengacu pada variable
// diluar scope untuk melakukan kalkulasi
function add(a) {
i += 2;
return i + a;
}
// Argumentnya sama, tapi menghasilkan output berbeda
add(2); // Menghasilkan 4 (i = 2)
add(2); // Menghasilkan 6 (i = 4)
Kesimpulan
Kamu wajib menggunakan pure function daripada impure function jika memungkinkan. Lebih simple untuk diimplementasikan dan mengurangi penyebab terjadinya error pada kodemu.