Hoisting হল জাভাস্ক্রিপ্টের এমন একটি আচরণ যা ঘোষণাগুলিকে তাদের স্কোপের শীর্ষে নিয়ে যায় কম্পাইল ফেজে, কোনো কোড চালানোর আগে। তবে কীভাবে কোনো কিছু hoisted হয় তা ঘোষণার ধরনের উপর নির্ভর করে।
js
.(a);
a = ;
();
() { .(); }
.(b);
b = ;
Hoisting হল জাভাস্ক্রিপ্টের এমন একটি আচরণ যা ঘোষণাগুলিকে তাদের স্কোপের শীর্ষে নিয়ে যায় কম্পাইল ফেজে, কোনো কোড চালানোর আগে। তবে কীভাবে কোনো কিছু hoisted হয় তা ঘোষণার ধরনের উপর নির্ভর করে।
.(a);
a = ;
();
() { .(); }
.(b);
b = ;
var: ঘোষণা hoisted হয় এবং undefined-এ শুরু হয়। তাই এটি প্রাথমিকভাবে পড়লে undefined পাওয়া যায়, ত্রুটি নয়।function ঘোষণা: সম্পূর্ণভাবে hoisted — আপনি এগুলি তাদের সংজ্ঞা লাইনের আগে কল করতে পারেন।let / const: hoisted হয় কিন্তু শুরু করা হয় না। এগুলি Temporal Dead Zone (TDZ)-এ থাকে ব্লকের শুরু থেকে ঘোষণার লাইন পর্যন্ত; TDZ-এ এগুলিতে প্রবেশ করলে ReferenceError নিক্ষিপ্ত হয়।const f = () => {}) প্রাথমিকভাবে কল করা যায় না — শুধুমাত্র const/var বাইন্ডিং hoisted হয়, ফাংশন নয়।Hoisting ব্যাখ্যা করে "এটি কেন undefined?" এবং "এই ফাংশনটি কীভাবে এর সংজ্ঞার আগে কাজ করে?" let/const-এর জন্য TDZ আসলে একটি বৈশিষ্ট্য — এটি নীরব undefined বাগকে জোরালো ত্রুটিতে পরিণত করে, আপনাকে ব্যবহারের আগে ঘোষণা করতে উৎসাহিত করে।