JavaScript Me Currying Kya Hota Hai?

Ek advanced functional programming technique ko aasaani se samjhein.

Currying Kya Hai?

Currying ek functional programming technique hai jisme ek function jo multiple arguments leta hai, use aise sequence of functions me transform kiya jaata hai jisme har function sirf ek argument accept karta hai.

Jab aap ek function ko curry karte hain, toh har step par ek argument pass kiya jaata hai aur agla function return hota hai jo next argument ka wait karta hai. Yeh process tab tak chalta hai jab tak saare required arguments mil nahi jaate, aur uske baad final output return hota hai.

// Normal Function
function sum(a, b, c) {
  return a + b + c;
}
sum(2, 3, 4); // Output: 9

// Curried Version
function curriedSum(a) {
  return function(b) {
    return function(c) {
      return a + b + c;
    }
  }
}
curriedSum(2)(3)(4); // Output: 9

Currying ka Fayda: Reusability and Customization

Currying ka sabse bada fayda hai ki aap functions ko partially apply kar sakte hain. Iska matlab, aap ek function ko sirf kuch arguments ke saath call karke ek naya, specialized function bana sakte hain.

// Upar wale curriedSum ka use karke
const addTen = curriedSum(10); // 'a' ko 10 par fix kar diya

const addFifteen = addTen(5); // 'b' ko 5 par fix kar diya (10 + 5)

console.log(addFifteen(3)); // 'c' ko 3 pass kiya (10 + 5 + 3) -> Output: 18
console.log(addFifteen(10)); // 'c' ko 10 pass kiya (10 + 5 + 10) -> Output: 25

Yahan, humne `curriedSum` ka use karke `addTen` aur `addFifteen` jaise naye, reusable functions banaye.

Currying with Arrow Functions

ES6 arrow functions ka use karke currying ko aur bhi concise tarike se likha ja sakta hai.

const multiply = a => b => c => a * b * c;

console.log(multiply(2)(3)(4)); // Output: 24

const multiplyByTwo = multiply(2);
console.log(multiplyByTwo(5)(5)); // Output: 50

Currying vs. Partial Application

Aksar log currying aur partial application ko confuse kar dete hain, lekin unme ek subtle difference hai.

FeatureCurryingPartial Application
Arguments per FunctionHar function hamesha sirf ek argument leta hai.Function ek ya ek se zyada arguments le sakta hai.
StructureFunctions ki ek nested chain banata hai.Ek function return karta hai jise kam arguments ki zaroorat hoti hai.

Simply put, currying hamesha single-argument functions ki chain produce karta hai, jabki partial application ka goal pehle se kuch arguments fix karke ek naya, kam arguments wala function banana hai.

Key Takeaways

  • Currying: Ek function ko single-argument functions ki chain me todna.
  • Partial Application: Functions ko pehle se kuch arguments dekar naye functions banana.
  • Closures: Currying closures ke concept par kaam karti hai, jahan inner functions outer scope ke arguments ko 'yaad' rakhte hain.
  • Benefits: Isse code reusable, modular, aur composable banta hai.
Bonus: Practical Application!
Ab in concepts ko practically use karke dekhein.

Ek `log` function banayein jo curried ho aur pehle argument me log level ('INFO', 'WARN', 'ERROR') aur doosre me message le. Fir, `infoLog`, `warnLog` jaise specialized loggers banayein.

Practice in JS Editor
Test Your Knowledge!
Kya aap JavaScript Currying ke baare mein seekh chuke hain? Chaliye dekhte hain!

Apni knowledge test karne ke liye is quick quiz ko dein.

Start Quiz