JavaScript Me Currying Kya Hota Hai – JavaScript Currying

1. Currying Kya Hota Hai ?

Currying ek functional programming technique hai jisme ek function jo normally multiple arguments leta hai, usse transform karke ek aise sequence of functions banaya jaata hai jisme har function sirf ek argument accept karta hai. Iska main purpose code ko modular, reusable aur flexible banana hota hai.

Jab hum ek function ko curry karte hain, toh hum use ek chain of functions me tod dete hain. Har step par ek argument pass kiya jaata hai aur agla function return hota hai jo next argument lega. Ye process tab tak chalta hai jab tak saare required arguments mil jaate hain, aur uske baad final output return hota hai.

Currying ka fayda ye hai ki aap functions ko partially apply kar sakte hain. Matlab, aap ek function ko sirf kuch arguments ke saath call karke ek naya function bana sakte hain jo baaki ke arguments baad me lega. Isse aap easily customized functions bana sakte hain aur repetitive code likhne ki zaroorat nahi hoti.

Ye approach functional programming languages me bahut common hai, jaise Haskell, lekin JavaScript jaise multi-paradigm languages me bhi kaafi useful hai. Overall, currying se code zyada readable, maintainable aur testable ho jaata hai.

Example:
Normal function:

sum(2, 3, 4) // ek hi bar mein teeno arguments pass

Curried function:

sum(2)(3)(4) // ek ek karke pass karna

Kyon use hota hai?

  • Step-by-step argument pass karne ki flexibility milti hai.
  • Ek argument fix karke function ko baad mein reuse kiya ja sakta hai.
  • Code modular aur clean ho jata hai.

Currying mostly functional programming languages (jaise Haskell) mein hota tha, par JavaScript mein bhi possible hai because functions are first-class citizens.

 Example Without Currying :

Normal function jo ek hi bar mein multiple arguments leta hai:

function normalSum(a, b, c) {
    return a + b + c;
}

console.log(normalSum(2, 3, 4)); // Output: 9

Is case mein hume ek hi function call mein teeno arguments pass karne padte hain.
Agar tum ek argument fix karna chahte ho (e.g., a = 2), toh tumhe ek alag function banana padega ya bind ka use karna padega.

 Example With Currying :

function curriedSum(a) {
    return function(b) {
        return function(c) {
            return a + b + c;
        }
    }
}

console.log(curriedSum(2)(3)(4)); // Output: 9

Breakdown:

  • curriedSum(2) → returns a function jo b lega.
  • curriedSum(2)(3) → returns a function jo c lega.
  • curriedSum(2)(3)(4) → ab saare arguments mil gaye, result return.

Tum ek argument fix karke baaki baad mein de sakte ho.

2. Currying ka Fayda

A. Reusability :

Reusability ka matlab hai ek hi code, component ya resource ko multiple jagah use kar paana bina dobara likhe. Isse development ka time aur effort bach jaata hai, aur errors kam hote hain. Jab hum reusable functions, modules ya classes banate hain, to unhe future projects me bhi asaani se integrate kar sakte hain. Yeh concept software development, web design, aur programming me bahut important hai. Reusability se maintainability improve hoti hai aur system ka efficiency level badh jaata hai.

Example:

const add2 = curriedSum(2);
console.log(add2(3)(4)); // 9
console.log(add2(10)(5)); // 17

B. Code Readability & Maintainability

Code readability & maintainability ka matlab hai aisa code likhna jo easily samajh aaye aur future me easily update ya modify kiya ja sake. Readable code me clear variable names, proper indentation, aur meaningful comments hote hain. Maintainable code modular hota hai jisme functions ya classes logically separate hote hain taaki changes karte waqt error ka risk kam ho. Consistent coding style aur proper documentation se team members ko kaam easy ho jata hai. Isse long-term project success aur developer productivity dono improve hote hain.

C. Customization

Customization ka matlab hota hai kisi product, service ya system ko apni zarurat aur pasand ke hisaab se badalna ya design karna. Isme user apne taste, style ya requirements ke mutabik features choose ya modify kar sakta hai. Jaise website ka theme change karna, app ka layout set karna, ya kapdon ka design apne style ke hisaab se tayar karwana. Customization se user ko ek personalized experience milta hai jo unke comfort aur satisfaction ko badhata hai. Ye aaj ke digital aur physical dono products me common hai.

Example:

const greet = name => msg => `${msg}, ${name}!`;
console.log(greet("Rahul")("Hello")); // Hello, Rahul!
console.log(greet("Rahul")("Good Morning")); // Good Morning, Rahul!

Example :

Imagine tum ek restaurant mein ho:

  1. Pehla waiter tumse dish ka type poochta hai. (First function call)
  2. Dusra waiter tumse size poochta hai. (Second function call)
  3. Tisra waiter tumse toppings poochta hai. (Third function call)
  4. Saare choices ke baad tumhe final dish milti hai. (Final result)

Link with currying: Har waiter ek argument le raha hai (dish, size, topping), aur last mein tumhe final product mil raha hai.

3. Arrow Function Style Currying

JavaScript mein arrow functions ka use karke currying concise likh sakte ho:

const curriedSum = a => b => c => a + b + c;

console.log(curriedSum(2)(3)(4)); // 9

4. Currying vs Partial Application

Feature Currying Partial Application
Arguments per function Har function sirf ek argument leta hai Function multiple arguments le sakta hai
Approach Function ko ek-argument functions ki chain me todna Kuch arguments pehle fix karke baaki baad mein dena
Example sum(2)(3)(4) sum.bind(null, 2, 3)(4)

5. Use Cases:

A. Event Handling

Event Handling ka matlab hai user actions jaise click, hover, keypress ko detect karke uske according response dena. Isme event listener set karke specific function chalaya jaata hai jab event trigger hota hai.

const handleEvent = eventType => element =>
    element.addEventListener(eventType, () => console.log(`${eventType} triggered`));

const onClick = handleEvent('click');
onClick(document.getElementById('btn'));

Tum ek hi base function bana kar multiple elements par apply kar sakte ho.

B. API Calls

API calls ka matlab hota hai ek application dusre application ya server se data mangta hai ya bhejta hai. Yeh request-response process hota hai jo applications ke beech communication ko easy aur fast banata hai.

const fetchFromAPI = baseUrl => endpoint => fetch(`${baseUrl}${endpoint}`);

const githubAPI = fetchFromAPI('https://api.github.com/');
githubAPI('users/sandeepbhandari');

Base URL fix karke baaki endpoints baad mein pass kar sakte ho.

6. Summary :

  • Currying = Function ko ek-argument functions ki chain me todna.
  • Har call ek argument lega aur next function return karega, jab tak saare arguments mil na jaayein.
  • Benefits: Reusability, Customisation, Cleaner Code.
  • Difference from Partial Application: Currying me har step ek hi argument leta hai, partial me multiple le sakta hai.

Quiz: Test Your Knowledge on JavaScript Currying

Bonus: Practical Application!

Aaj hi JavaScript Currying ka use karke apne functions ko aur reusable aur modular banayein!

JavaScript Currying ko sahi tareeke se samajhne ke liye ek function ko multiple single-argument functions me todna seekhein. Isme function chaining ka upayog hota hai jisme har step pe ek argument pass hota hai aur final result tab milta hai jab saare arguments provide ho jaate hain. Ye technique code reusability, partial application aur function composition jaise concepts ko samajhne ke liye bahut useful hoti hai.

Leave a Reply