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