Currying is an advanced technique of working with functions. It’s used not only in JavaScript but in other languages as well.
Currying is a transformation of functions that translates a function from callable as f(a, b, c)
into callable as f(a)(b)(c)
.
Currying doesn’t call a function. It just transforms it.
Curried functions are higher-order functions that allow us to create specialized versions of original functions. Currying works thanks to closures, which retain the enclosing function scopes after they have returned.
Summary
Currying is a transform that makes f(a,b,c)
callable as f(a)(b)(c)
. JavaScript implementations usually both keep the function callable normally and return the partial if the arguments count is not enough. Currying allows us to easily get partials.
A Callback function is a function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.
Here is a quick example:
The above example is the synchronous callback, as it is executed immediately.
Note, however, that callbacks are often used to continue code execution after an asynchronous operation has completed — these are called asynchronous callbacks. A good example is the callback functions executed inside a .then()
block chained onto the end of a promise after that promise fulfills or rejects. This structure is used in many modern web APIs, such as fetch()
.