Global Scope vs Module Scope
জাভাস্ক্রিপ্টে স্কোপ খুবই গুরুত্বপূর্ণ একটি বিষয়। এখানে দুইটি প্রধান স্কোপের তুলনা করে ব্যাখ্যা করা হলো — Global Scope এবং Module Scope।
ধরো, তুমি একটা স্কুলে আছো…
- Global scope হলো পুরো স্কুল — যেকোনো ক্লাসের স্টুডেন্ট, টিচার, সবাই একে অপরকে চিনতে পারে।
- Module scope হলো শুধু একটা ক্লাস — ঐ ক্লাসের ভিতরের ছাত্ররা একে অপরকে চিনে, কিন্তু অন্য ক্লাসের কেউ জানে না কে কে আছে, unless তারা নিজেদের পরিচয় দেয় (মানে
export
করে)।
JavaScript-এ “Global Scope” মানে এই না যে সেটা অন্য ফাইল থেকেও গ্লোবালি অ্যাক্সেস করা যাবে।
👉 এটা শুধুই ঐ একটা স্ক্রিপ্ট বা HTML ফাইলের মধ্যে গ্লোবাল।
যদি আলাদা ফাইল হয়, সেটা আর সেই গ্লোবাল স্কোপে পড়ে না unless explicitly import করা হয়।
🔹 উদাহরণ ১ – সাধারণ স্ক্রিপ্ট (script mode)
<!-- index.html -->
<script src="a.js"></script>
<script src="b.js"></script>
// a.js
var name = "Rahim"; // এটা গ্লোবাল স্কোপে আছে
// b.js
console.log(name); // ✅ এটা কাজ করবে, কারণ দুইটা একই গ্লোবাল স্কোপে
✅ কারণ দুইটা স্ক্রিপ্ট ট্যাগ একসাথে লোড হয়েছে — তাই name একে অপরকে দেখতে পাচ্ছে।
🔹 উদাহরণ ২ – মডিউল ইউজ করলে
<script type="module" src="a.js"></script>
<script type="module" src="b.js"></script>
// a.js
let name = "Rahim"; // module scoped
// b.js
console.log(name); // ❌ ReferenceError: name is not defined
❌ এখন দুইটা ফাইল নিজস্ব আলাদা স্কোপে — একে অপরকে দেখতেই পায় না!
✍️ সংক্ষেপে:
অবস্থা | Access করা যাবে? | কারণ |
---|---|---|
script mode, একই স্ক্রিপ্ট ট্যাগে | ✅ হ্যাঁ | একটাই global scope |
module mode (type=“module”) | ❌ না | আলাদা module scope |
আলাদা .js ফাইল (module না) | ❌ না | ফাইল আলাদা, একই স্কোপ শেয়ার করে না |
module থেকে import/export করলে | ✅ হ্যাঁ | explicitly ভাগ করে নেওয়া হয় |
✅ Bottom Line:
👉 “Global” বলতে JavaScript বোঝায় একটা স্ক্রিপ্ট বা environment-এর ভেতরে গ্লোবাল,
কিন্তু ফাইল আলাদা হলে, সেটা automatically গ্লোবাল না, unless browser একই স্কোপে চালায়।
🧠 মূল পার্থক্য
বৈশিষ্ট্য | 🌐 Global Scope | 📦 Module Scope |
---|---|---|
যেভাবে তৈরি হয় | <script> ট্যাগ দিয়ে (যেখানে type="module" না) | <script type="module"> বা .mjs ফাইল |
ফাইলের আচরণ | সব ভ্যারিয়েবল গ্লোবালি শেয়ার হয় | প্রতিটি ফাইলের নিজস্ব আলাদা স্কোপ |
ভ্যারিয়েবল অ্যাক্সেস | যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য | বাইরের জায়গা থেকে অ্যাক্সেস করা যাবে না যদি না export করা হয় |
React/Next.js এ | ব্যবহার হয় না | সব ফাইলই by default module scoped |
ভ্যারিয়েবল কনফ্লিক্ট | সম্ভাবনা বেশি (একই নামে ভ্যারিয়েবল ওভাররাইট হতে পারে) | সম্ভাবনা কম (নিজস্ব স্কোপে থাকে, বাইরে লিক করে না) |
ভ্যারিয়েবল শেয়ারিং | স্বয়ংক্রিয়ভাবে সব জায়গায় শেয়ার হয় | আলাদাভাবে export/import করতে হয় |
📌 সারাংশ:
- ছোটখাটো স্ক্রিপ্টের জন্য Global Scope সুবিধাজনক, কিন্তু বড় অ্যাপ বা মডিউলার কোডের জন্য এটা ঝুঁকিপূর্ণ।
- Module Scope নিরাপদ, রিইউজেবল এবং React/Next.js-এর মতো ফ্রেমওয়ার্কে ডিফল্টভাবেই ব্যবহৃত হয়।
- সব modern JavaScript কোডই এখন module scope এ লেখা হয়।
Last updated on