Currying Functions
Currying is taking a function with multiple arguments and breaking it down into one or more additional functions that take just one argument and eventually resolve to a value. The initial function call does not take all the arguments but returns a function whose input is the remaining arguments and whose output is the intended result for all the arguments.
That was a mouthful, so let's look at an example. Say you have a simple sum function:
function sum(a, b) {
    return a + b;
}
Let's express this as a curried function in arrow notation:
const sum = a => b => a + b;
Notice that we have two levels of functions here, and each function takes one parameter. The first function takes one parameter, a, and returns another function, which takes the second parameter, b.
Note
If you are having trouble seeing the two function levels, here's an equivalent that may help:
function sum(a) {
  ...