Currying is when you break down a function that takes multiple arguments into a series of functions that each take only one argument. Here’s an example in JavaScript:
function add (a, b) {
return a + b;
}
add(3, 4); // returns 7
This is a function that takes two arguments, a and b, and returns their sum. We will now curry this function:
function add (a) {
return function (b) {
return a + b;
}
}
This is a function that takes one argument, a
, and returns a function that takes another argument, b
, and that function returns their sum.
add(3)(4); // returns 7
var add3 = add(3); // returns a function
add3(4); // returns 7
- The first statement returns 7, like the
add(3, 4)
statement. - The second statement defines a new function called
add3
that will
add 3 to its argument. (This is what some may call a closure.) - The third statement uses the
add3
operation to add 3 to 4, again
producing 7 as a result.