What is a side effect?
The following function has no side effect:
function add(a, b) { return a + b }
This function is quite pure, in the sense that if it is invoked with the same set of input arguments, we should get the same result – that is, add(1, 1)
will return 2
. This type of pure function is easy to understand, test, and develop. The reason for this is that the function only depends on the input arguments and has no additional hidden dependency.
You might wonder what a hidden dependency could be? Believe it or not, it's quite easy to have one. In the following code, we'll intentionally introduce two lines and each will add a hidden dependency:
let c = 3 function add(a, b) { console.log(a, b) return a + b + c }
The first line adds an external dependency from the c
variable. Because c
is a global variable, it bypasses the input argument list. If we invoke the add(1, 1)
function now, it can return any number...