Browser vs Node.js & IIFE
🌐 গ্লোবাল অবজেক্ট: ব্রাউজার বনাম Node.js
জাভাস্ক্রিপ্ট চালানোর সময় আমরা নির্দিষ্ট কিছু গ্লোবাল অবজেক্টের অ্যাক্সেস পাই। এই গ্লোবাল অবজেক্টগুলো প্ল্যাটফর্ম ভেদে আলাদা হতে পারে — যেমন: ব্রাউজারে আমরা window অবজেক্ট পাই এবং Node.js-এ পাই global অবজেক্ট।
.174a3961.png&w=3840&q=75)
🧭 ব্রাউজারে গ্লোবাল অবজেক্ট (window)
যখন আমরা ব্রাউজারে জাভাস্ক্রিপ্ট চালাই, তখন আমরা window অবজেক্টের মাধ্যমে অনেক বিল্ট-ইন মেথড ও প্রপার্টির অ্যাক্সেস পাই:
console.log(window);📌 উদাহরণ:
setTimeout(() => {
console.log("Hello from browser!");
}, 1000);
fetch("https://jsonplaceholder.typicode.com/todos/1")
.then(response => response.json())
.then(json => console.log(json));🔍 setTimeout() এবং fetch() এই দুটি ফাংশনই window অবজেক্টের অংশ।
🖥️ Node.js-এ গ্লোবাল অবজেক্ট (global)
Node.js-এ ব্রাউজারের মতো window অবজেক্ট নেই, কিন্তু global নামে একটি অবজেক্ট থাকে যেটা একই উদ্দেশ্যে কাজ করে:
console.log(global);📌 উদাহরণ:
setTimeout(() => {
console.log("Hello from Node.js!");
}, 1000);
⚠️ Note: Node.js-এ require, module, __dirname, __filename ইত্যাদি global অবজেক্টের অংশ না — এগুলো Node.js এর নিজস্ব মডিউল সিস্টেম থেকে পাওয়া যায়।
🛡️ Node.js কোডের গোপন রহস্য — IIFE
Node.js যখন কোনো .js ফাইল রান করে, তখন সে পুরো ফাইলটাকে একটা IIFE (Immediately Invoked Function Expression)-এর ভেতর রেখে রান করে।
(function(exports, require, module, __filename, __dirname) {
// আমাদের লেখার কোড এখানেই চলে
})();🎯 কারণ:
- কোড আলাদা scope-এ থাকে (গ্লোবাল স্কোপ পলিউট হয় না)
- প্রতিটি মডিউল নিজস্বভাবে isolate থাকে
⚡ IIFE (Immediately Invoked Function Expression)
সংজ্ঞা:
IIFE হলো এমন একটি ফাংশন যেটিকে ডিফাইন করার সাথেসাথে কল করে ফেলা হয়। এটা সাধারণত স্কোপ isolate রাখতে বা এক্সিকিউশনের সময় কিছু variable/private context তৈরি করার জন্য ব্যবহৃত হয়।
🧪 উদাহরণ:
(function() {
const secret = "hidden";
console.log("IIFE executed");
})();🔐 এখানে secret নামক ভ্যারিয়েবলটি বাইরের কোনো স্কোপে অ্যাক্সেসযোগ্য নয়।
✅ উপসংহার
- 🪟 ব্রাউজারে
window, 🖥️ Node.js-এglobal - 🧰
setTimeout,setInterval— দুই প্ল্যাটফর্মেই গ্লোবালি অ্যাক্সেসযোগ্য - 📦
require,moduleইত্যাদি Node.js-এর নিজস্ব scope-এ থাকে - 🧪 Node.js পুরো কোড IIFE-র ভেতরে চালায় যাতে করে scoped execution সম্ভব হয়
এই জ্ঞানের মাধ্যমে তুমি সহজেই বুঝতে পারবে কোন প্ল্যাটফর্মে কীভাবে execution হয় এবং কেন কিছু জিনিস globally পাওয়া যায় আবার কিছু পাওয়া যায় না।