-
Notifications
You must be signed in to change notification settings - Fork 62
/
25_pure_function.js
65 lines (51 loc) · 1.8 KB
/
25_pure_function.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* Fungsi adalah sebuah proses yang mengambil suatu Input (Argumen) dan menghasilkan
* output (return value).
*
*
* Fungsi biasanya digunakan untuk:
* 1. Mapping: mengolah input dan menghasilkan output
* 2. Prosedur: fungsi digunakan untuk eksekusi sederet prosedur (langkah-langkah teknis). biasa
* juga disebut: Prosedural Programming
* 3. I/O: yaitu untuk komunikasi antar interface. Misal pada komputer:
* fungsi Screen komunikasi dengan fungsi Storage dsb
*
* Dan Pure function adalah fungsi yang Mapping adalah tugas utamanya.
* Makanya pure function Wajib punya minimal 1 input dan 1 return value (output)
* dan satu input yang sama akan menghasilkan output yang selalu sama..apapun kondisinya
*
* pure function juga tidak boleh menggunakan dan mengubah Global variable
*/
// contoh pure function
function addTwoNumber(a, b) {
return a + b;
}
addTwoNumber(2, 5); // 7...harus/akan selalu 7 kapanpun dan apapun kondisinya
// apakah contoh dibawah ini Pure Function?
const time = function() {
return new Date().toLocaleTimeString();
}
console.log(time());
/**
* fungsi diatas adalah Fure function, karena fungsi time() akan menghasilkan
* output sesuai dengan input nya
* input(currentTime) <> output(currentTime)
*
*/
// contoh pure function yang dikotori, jadinya gk pure lagi, karena fungsi myAge
// bergantung pada variable global age
const age = 20;
const myAge = function (a) {
return a * age;
}
console.log(myAge(30));
// merubah value
let nilai = 10; // bisa juga var nilai = 10;
let rubahNilai = function() {
nilai = 12;
};
rubahNilai();
console.log(nilai); // 12 <--- nilai sekarang berubah
// karenanya function rubahNilai() diatas bukan lah pure function
// karena ia merubah suatu entity diluar context pribadi nya
// alias dia punya side-effect