WHAT IS CURRYING IN JAVASCRIPT?
Currying in JavaScript transforms a function with multiple arguments into a nested series of functions, each taking a single argument. Currying helps you avoid passing the same variable multiple times, and it helps you create a higher order function.
OR
Translating the evaluation of a function that takes multiple arguments (or a tuple of arguments) into evaluating a sequence of functions, each with a single argument (partial application)
Why Is Currying in JavaScript Useful?
Currying helps you avoid passing the same variable again and again.
It helps to create a higher order function.
Currying transforms a function with multiple arguments into a sequence/series of functions, each taking a single argument.
Currying allows greater code clarity in certain cases. What does clarity mean? Reading the function provides clear indication of its functionality.
Currying can help to eliminate redundant code by allowing developers to create specialized functions that share common functionality. This can lead to a more streamlined code base that is easier to maintain.
I can't think of an instance where currying—by itself—is useful in JavaScript; it is a technique for converting function calls with multiple arguments into chains of function calls with a single argument for each call, but JavaScript supports multiple arguments in a single function call.
// Here are some examples:
// Using Closure
// Example:
function sum(a) {
return function(b) {
return function(c) {
return a + b + c;
};
};
}
// Using Bind
// Example:
function sum(a, b, c) {
return a + b + c;
}
const curriedsum = sum.bind(null, 1);
console.log(curriedsum(2, 3)); // outputs 6
// Using Lodash (Third Party Library)
// Example:
const _ = require('lodash');
function sum(a, b, c) {
return a + b + c;
}
const curriedsum = _.curry(sum);
console.log(curriedsum(1)(2)(3)); // outputs 6
console.log(curriedsum(1, 2)(3)); // outputs 6
console.log(curriedsum(1)(2, 3)); // outputs 6
// Other Example
// Example:
function Welcome(name) {
var greetingInfo = function (message) {
console.log(message + " " + name);
};
return greetingInfo;
}
var myFunction = Welcome("John");
myFunction("Welcome "); //Output: Welcome John
myFunction("Hello Mr."); //output: Hello Mr.John
// Example:
const ob = {
name:"zeeshan",
age:28
}
function userInfo(obj){
return function userObj(prop) {
return obj[prop];
}
}
console.log(userInfo(ob)('name'))
const multiArgFunction = (a, b, c) => a + b + c;
console.log(multiArgFunction(1, 2, 3)); // 6
const curryUnaryFunction = (a) => (b) => (c) => a + b + c;
curryUnaryFunction(1); // returns a function: b => c => 1 + b + c
curryUnaryFunction(1)(2); // returns a function: c => 3 + c
curryUnaryFunction(1)(2)(3); // returns the number 6
Top comments (0)