🎯
Functions Advanced

Higher-Order Functions

Functions Jo Functions Lete/Dete Hain
💡 Higher-order function ek "manager" jaisa hai jo doosre workers (functions) ko hire karta hai kaam karne ke liye — khud kaam nahi karta, balki decide karta hai KAUNSA worker (function) kab chalega.

Higher-order function wo function hai jo (1) ek ya zyada functions ko PARAMETER ke roop mein leta hai, aur/ya (2) ek function RETURN karta hai. JavaScript mein functions "first-class citizens" hain — variables jaisa treat hote hain, isliye passed/returned ho sakte hain.

// Function parameter ke roop mein leta hai:
function repeat(n, action) {
  for (let i = 0; i < n; i++) {
    action(i);
  }
}
repeat(3, i => console.log("Iteration " + i));

// Function return karta hai:
function multiplier(factor) {
  return function(x) {
    return x * factor;
  };
}
const double = multiplier(2);
console.log(double(5));   // 10

// Built-in higher-order functions — bahut common:
[1, 2, 3].forEach(n => console.log(n));   // forEach function leta hai
[1, 2, 3].map(n => n * 2);                  // map bhi function leta hai
🎯
Higher-order function ek "manager" jaisa hai jo doosre workers (functions) ko hire karta hai kaam karne ke liye — khud kaam nahi karta, balki decide karta hai KAUNSA worker (function) kab chalega.
1 / 2
⚡ Quick Recap
  • Function parameter leta hai, ya function return karta hai (ya dono)
  • Functions "first-class citizens" hain JavaScript mein
  • map/filter/reduce/forEach sab built-in higher-order functions
Is page mein (2 subtopics)

Multiple functions ko combine karke ek naya function banana ("composition") — ek function ka output doosre ka input ban jaata hai, chain ki tarah. Functional programming ka core concept.

const addOne = x => x + 1;
const double = x => x * 2;

function compose(f, g) {
  return function(x) {
    return f(g(x));
  };
}

const addThenDouble = compose(double, addOne);
console.log(addThenDouble(3));   // (3+1)*2 = 8
💡Tip: Composition se chhote, single-purpose functions ko combine karke complex behavior bana sakte ho — "small, reusable pieces" philosophy, jaise Unix pipes.

"Callback" ek function hai jo doosre function ko pass kiya jaata hai, BAAD mein call hone ke liye — event handling, async operations (aage Asynchronous JS category) mein bahut common pattern.

function processData(data, callback) {
  const result = data.toUpperCase();
  callback(result);   // "call back" jab kaam ho jaaye
}

processData("hello", function(result) {
  console.log("Processed: " + result);
});
💡Tip: "Callback hell" (bahut nested callbacks) purane async JavaScript ki ek famous problem thi — Promises/async-await (aage aayega) isse solve karte hain, lekin callbacks ka basic concept samajhna zaroori hai foundation ke liye.