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. Basics
  5. Q5. Explain how closures work in JavaScript with an example.
JavaScriptBasics

Q5. Explain how closures work in JavaScript with an example.

ফাংশন কীভাবে বাইরের scope-এর ভেরিয়েবল মনে রাখে — counter ও loop-এর উদাহরণসহ।

Closure মানে একটি function তার বাইরের scope-এর ভেরিয়েবল মনে রাখে এবং সেগুলো ব্যবহার করতে পারে — তখনই যখন function-টি ডাকা হয়, যদিও বাইরের scope তখন শেষ হয়ে গেছে।

closure দিয়ে counterjavascript
javascript
function createCounter() {
  let count = 0; // বাইরের scope-এর ভেরিয়েবল

  return function increment() {
    count = count + 1;
    return count;
  };
}

const counter = createCounter();

console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

ধাপে ধাপে দেখি। createCounter() ডাকলে count = 0 তৈরি হয়, তারপর ভেতরের ফাংশনটি ফেরত দেওয়া হয়। বাইরের ফাংশন শেষ হয়ে গেলেও count মুছে যায় না — কারণ ফেরত দেওয়া ফাংশনটি তার রেফারেন্স ধরে রাখে। এই ধরে রাখাই closure।

তাই counter() বারবার ডাকলেও count একই থাকে এবং ধাপে ধাপে বাড়ে — প্রতিটি কলে 0 থেকে নতুন করে শুরু হয় না।

var ব্যবহার করলে সমস্যা হয়, কারণ var একটি shared ভেরিয়েবল — তাই সবসময় শেষের মান দেখাবে।

loop-এ closurejavascript
javascript
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i)); // 3, 3, 3 ❌
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i)); // 0, 1, 2 ✅
}
কোথায় কাজে লাগে

Closure-ই event listener-এর ভিতরের state ধরে রাখা, counter বানানো, cache তৈরি এবং পুরোনো ধরনের private variable বানানোর পেছনে কাজ করে।

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

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

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

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

mdanamolhasan1998@gmail.com