Q9. Explain the concept of the temporal dead zone.
let ও const ব্যবহারের আগে কেন ReferenceError পড়ে, var-এর সাথে পার্থক্য কী।
Temporal Dead Zone (TDZ) হলো let বা const ঘোষিত হওয়ার পর থেকে তার মান বসানোর লাইন পর্যন্ত যে সময়টুকু — এই সময়ে ভেরিয়েবলটা থাকে, কিন্তু ব্যবহার করা যায় না।
console.log(count); // ReferenceError
let count = 5;
console.log(name); // undefined — error নেই
var name = "Rahim";ধাপে ধাপে — কোড চালানোর শুরুতে ইঞ্জিন let count-কে ঘোষিত বলে জেনে নেয় কিন্তু তখনও মান জানে না, শুধু জানে যে এর মান এখনো বসেনি — এটাই TDZ। তাই প্রথম লাইনে count পড়তে গেলে ReferenceError। দ্বিতীয় লাইনে ঘোষণা হয়, মান 5 বসে, এরপর থেকে ব্যবহার করা যায়।
var-এর ক্ষেত্রে TDZ থাকে না — তাই ঘোষণার আগেও undefined মিলে যায়, কোনো error ছাড়াই।
const-এ একটা ব্যতিক্রম আছে। ঘোষণার সাথে সাথেই মান দিতে হয়, তাই আলাদা কোথাও শুধু const x; লিখলে সাথে সাথে error পড়ে।
const a; // SyntaxError — মান দেওয়া বাধ্যতামূলক{
console.log(inside); // ReferenceError
let inside = 1;
}
console.log(inside); // ReferenceError — block-এর বাইরে তো নেইইTDZ-এর ReferenceError-এর বার্তা ঘোষণার লাইন নম্বর দেখিয়ে দেয়, তাই খুব দ্রুত বুঝে যাওয়া যায় ভুলটা কোথায়। ভেরিয়েবল ঘোষণার আগে ব্যবহার এড়িয়ে চলাই সবচেয়ে ভালো।