Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Functional Programming
  5. Q32. What is currying in JavaScript?
JavaScriptFunctional Programming

Q32. What is currying in JavaScript?

একাধিক আর্গুমেন্টের ফাংশনকে একটি একটি করে ভাগ করা এবং এর সুবিধা।

Currying মানে এমন ফাংশন লেখা যেটি একসঙ্গে সব আর্গুমেন্ট নেয় না, বরং প্রতিবার একটি করে আর্গুমেন্ট নিয়ে ফেরত একটি নতুন ফাংশন দেয় — যতক্ষণ না সব আর্গুমেন্ট দেওয়া হয়, তারপর ফলত্র পাওয়া যায়।

তিন ধাপে ভাগjavascript
javascript
// সাধারণ ফাংশন
function addThree(a, b, c) {
  return a + b + c;
}

// curried সংস্করণ
function curriedAdd(a) {
  return function (b) {
    return function (c) {
      return a + b + c;
    };
  };
}

curriedAdd(1)(2)(3); // 6

ধাপে ধাপে — curriedAdd(1) ডাকলে a ধরে 1 হয় এবং একটি ফাংশন ফেরত হয়। সেই ফাংশনে (2) দিলে b ধরে 2 হয়, আরেকটি ফাংশন ফেরত হয়। সবশেষে (3) দিলে c = 3 বসে এবং 1 + 2 + 3 = 6 ফেরত হয়।

Arrow function ও rest operator ব্যবহার করলে অনেক ছোট ও পড়তে সহজ হয়।

arrow function দিয়েjavascript
javascript
const add = (a) => (b) => (c) => a + b + c;

console.log(add(1)(2)(3)); // 6

// map-এর সাথে দারুণ কাজ করে
const users = [
  { name: "Rahim", age: 25 },
  { name: "Karim", age: 30 },
];

const getName = (obj) => obj.name;

console.log(users.map((user) => getName(user))); // ["Rahim", "Karim"]

সবচেয়ে বড় সুবিধা হলো আংশিকভাবে ফাংশন তৈরি করে রাখা যায় — বাকি আর্গুমেন্ট পরে দেওয়া হয়। এটাই currying-এর মূল শক্তি।

আংশিক ফাংশন তৈরিjavascript
javascript
function greet(greeting) {
  return function (name) {
    return greeting + ", " + name + "!";
  };
}

// শুধু অংশটা তৈরি, পরে ব্যবহার
const hello = greet("হ্যালো");
const goodMorning = greet("সুপ্রভাত");

console.log(hello("Rahim"));      // "হ্যালো, Rahim!"
console.log(goodMorning("Karim")); // "সুপ্রভাত, Karim!"
লজিক পুনঃব্যবহারযোগ্যjavascript
javascript
// লজিক আলাদা করা
const withTax = (rate) => (price) => price * (1 + rate);
const withDiscount = (rate) => (price) => price * (1 - rate);

console.log(withTax(0.1)(100));    // 110.00000000000001
console.log(withDiscount(0.2)(100)); // 80
বিষয়CurryingPartial application
কতবার ভাগসবসময় একটি করেযেকোনো সংখ্যক
শেষ ফলফাংশন না থেকে সরাসরি মানফাংশনই ফেরত হয়
উদাহরণadd(1)(2)(3)add(1, 2) → ফাংশন
সতর্কতা

currying-এর ফলে বারবার ফাংশন তৈরি হয়, তাই খুব ঘন ঘন ডাকা হলে সামান্য ধীর হতে পারে। আর map বা filter-এর মতো অনেক ডেটা থাকলে সাধারণ এক লাইনের ফাংশনই পরিষ্কার থাকে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Functional Programming বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com