1Referential transparency:
2 always gives the same return value for the same arguments.
3 the function cannot depend on any mutable state.
4Side-effect free:
5 cannot cause any side effects.
6 includin I/O (e.g., writing to the console or a log file),
7 modifying a mutable object,
8 reassigning a variable
9 writing to the console
10
11NOT pure functions:
12 console.log
13 element.addEventListener
14 Math.random
15 Date.now
16 $.ajax
17
18const o4 = Object.freeze({ foo: 'cant change me' }); //The object is immutable and the variable cannot be reassigned. This is what we want!!!!!!!!
19
20