নিম্নলিখিত ঘটে:
(1) দুটি পরিবর্তনশীল ঘোষণা রয়েছে a, একটি ব্লকের ভিতরে এবং এর বাইরে একটি।
(২) ফাংশন ঘোষণাটি উত্তোলন হয়ে যায় এবং অভ্যন্তরীণ ব্লকগুলি পরিবর্তনশীল হতে বাধ্য bound
(3) a = 5পৌঁছেছে, যা ব্লক ভেরিয়েবলকে ওভাররাইড করে।
(4) ফাংশন ঘোষণাটি পৌঁছেছে এবং ব্লক ভেরিয়েবলটি বহিরাগত ভেরিয়েবলে অনুলিপি করা হয়। দু'জনেরই এখন বয়স 5।
(5) a = 0এ পৌঁছেছে, যা ব্লক ভেরিয়েবলকে ওভাররাইড করে। বাইরের ভেরিয়েবল এর দ্বারা প্রভাবিত হয় না।
var a¹;
if (true) {
function a²() {} // hoisted
a² = 5;
a¹ = a²; // at the location of the declaration, the variable leaves the block
a² = 0;
console.log(a²)
}
console.log(a¹);
এটি আসলে সত্যিই স্পেসিফিকেশন অংশ, এটি একটি অংশ হয়, ওয়েব উত্তরাধিকার সামঞ্জস্য শব্দার্থবিদ্যা , তাই ব্লক ভিতরে ফাংশন ঘোষণা করছে না এবং এই ভাবে আচরণ করে এই কোড উপর নির্ভর করে না ।
এটি এখানেও ব্যাখ্যা করা হয়েছে