javascript-visualized

đŸ”ĨđŸ•ēđŸŧ JavaScript Visualized: Hoisting

āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ• āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āĻ•āĻ–āύāĻ“ āύāĻž āĻ•āĻ–āύāĻ“ āĻāĻ•āϟāĻž āĻŦāĻŋāϰāĻ•ā§āϤāĻŋāĻ•āϰ āĻāϰ⧋āϰ āĻĢ⧇āϏ āĻ•āϰ⧇āϛ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋āϤ⧇ āĻ¯ā§‡ā§Ÿā§‡ āĻĻ⧇āϖ⧇, āϕ⧋āύ āĻāĻ• āĻŦāĻŋāĻœā§āĻž āĻŦā§āϝāĻžāĻ•ā§āϤāĻŋ āĻŦāϞāϛ⧇ āϝ⧇ , āφāĻĒāύāĻžāϰ āĻāϰ⧋āϰāϟāĻž āφāϏāϞ⧇ hoisting āĻāϰ āĻ•āĻžāϰāϪ⧇ āĻšāĻšā§āϛ⧇āĨ¤ 🙃 āφāĻšā§āĻ›āĻž, āϤāĻžāĻšāϞ⧇ Hoisting āĻ•āĻŋ? (āφāϗ⧇āχ āĻŦāϞ⧇ āϰāĻžāĻ–āĻ›āĻŋ, scope āύāĻŋā§Ÿā§‡ āĻ…āĻ¨ā§āϝ āĻĒā§‹āĻ¸ā§āĻŸā§‡ āφāϞāĻžāĻĒ āĻ•āϰāĻŦ, āφāĻŽāĻŋ āĻĒā§‹āĻ¸ā§āϟ āϛ⧋āϟ āφāϰ āĻĢā§‹āĻ•āĻžāϏāĻĄ āϰāĻžāĻ–āϤ⧇ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰāĻŋ)

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡ āύāϤ⧁āύ āĻšā§Ÿā§‡ āĻĨāĻžāϕ⧇āύ, āφāĻĒāύāĻŋ āĻšā§ŸāϤ āϕ⧋āĻĄā§‡āϰ āĻ•āĻŋāϛ⧁ “āĻ…āĻĻā§āϭ⧁āĻ¤ā§ā§œā§‡â€ āφāϚāϰāύ āĻĻ⧇āϖ⧇āϛ⧇āύāĨ¤ āϝ⧇āĻŽāύ, āĻšā§āϟāĻšāĻžāϟ āϕ⧋āύ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ undefined āĻšā§Ÿā§‡ āϗ⧇āϞ, āĻ…āĻĨāĻŦāĻž āϕ⧋āĻĄ ReferenceError āĻĨā§āϰ⧋ āĻ•āϰāϛ⧇ āφāϰāĻ“ āφāύ⧇āĻ• āĻ•āĻŋāϛ⧁āĨ¤ Hoisting āϕ⧇ āĻĒā§āϰāĻžā§Ÿāχ āĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻžāĻ–āĻž āĻ•āϰāĻž āĻšā§Ÿ āϝ⧇ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāύāϕ⧇ āĻĢāĻžāχāϞ⧇āϰ āϟāĻĒ⧇ āωāĻ āĻŋā§Ÿā§‡ āφāύāĻž āĻšāϞ āĻšāχāĻ¸ā§āϟāĻŋāĻ‚āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āύāĻžāĻš! āĻāĻŽāύāϟāĻž āϘāϟāϛ⧇ āύāĻž, āϝāĻĻāĻŋāĻ“ āφāϚāϰāĻŖ āĻĻ⧇āϖ⧇ āĻ“āĻŽāύāϟāĻžāχ āĻŽāύ⧇ āĻšā§ŸāĨ¤ 😃

āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āχāĻžā§āϜāĻŋāύ āϝāĻ–āύ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻž āĻĒāĻžā§Ÿ, āĻĒā§āϰāĻĨāĻŽ āϝ⧇ āĻ•āĻžāϜāϟāĻž āϏ⧇ āĻ•āϰ⧇ āϤāĻž āĻšāϞ, āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āĻĄā§‡āϰ āĻĄāĻžāϟāĻžāϰ āϜāĻ¨ā§āϝ āĻŽā§‡āĻŽāϰāĻŋ āϏ⧇āϟ āĻ•āϰ⧇ āĨ¤ āĻāχ āϏāĻŽā§ŸāϟāĻžāϤ⧇ āϕ⧋āύ āϕ⧋āĻĄāχ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻšā§Ÿ āύāĻžāĨ¤ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏ⧇ āĻļ⧁āϧ⧁ āϏāĻŦāĻ•āĻŋāϛ⧁āϕ⧇ āĻĒā§āϰāĻŋāĻĒā§‡ā§ŸāĻžāϰ āĻŦāĻž āϰ⧇āĻĄāĻŋ āĻ•āϰ⧇āĨ¤ āĻĢāĻžāĻ‚āĻļāύ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ⧇āĻļāύ āφāϰ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻĻ⧁āχāϟāĻž āφāϞāĻžāĻĻāĻž āωāĻĒāĻžā§Ÿā§‡ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰ⧇ āϰāĻžāĻ–āĻž āĻšā§ŸāĨ¤ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞ⧋ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĻāĻŋā§Ÿā§‡ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤

āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŦāĻŋāώ⧟āϟāĻž āĻāĻ•āϟ⧁ āφāϞāĻžāĻĻāĻžāĨ¤ ES6 āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĻ⧁āχāϟāĻž āύāϤ⧁āύ keyword āύāĻŋā§Ÿā§‡ āĻāϏ⧇āϛ⧇āσ let āĻāĻŦāĻ‚ const āĨ¤ āϝ⧇āϕ⧋āύ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞāϕ⧇ āϝāĻĻāĻŋ let āĻ…āĻĨāĻŦāĻžÂ const keyword āĻĻāĻŋā§Ÿā§‡ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ, āϤāĻžāĻšāϞ⧇ āϏ⧇āϟāĻž uninitialized āĻ­āĻžāĻŦ⧇ āĻ¸ā§āĻŸā§‹āϰ āĻšā§ŸāĨ¤

var āĻĻāĻŋā§Ÿā§‡ āϝāĻĻāĻŋ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ, āϤāĻžāĻšāϞ⧇ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āĻĨāĻžāϕ⧇ undefined

āĻāĻ–āύ āϝ⧇āĻšā§‡āϤ⧁ creation phase āĻšā§Ÿā§‡ āϗ⧇āϛ⧇, āĻāĻŦāĻžāϰ āϕ⧋āĻĄāϟāĻž āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āϚāϞ⧇āύ āĻĻ⧇āĻ–āĻŋ, āĻĢāĻžāχāϞ⧇āϰ āĻļ⧁āϰ⧁āϤ⧇āχ āϝāĻĻāĻŋ āϤāĻŋāύāϟāĻž console.log() āĻ¸ā§āĻŸā§‡āϟāĻŽā§‡āĻ¨ā§āϟ āĻĨāĻžāϕ⧇(āĻŽāĻžāύ⧇ āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāĻžāϰ āφāϗ⧇āχ) āϤāĻžāĻšāϞ⧇ āĻ•āĻŋ āϘāĻŸā§‡āĨ¤

āϝ⧇āĻšā§‡āϤ⧁ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞ⧋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĢāĻžāĻ‚āĻļāύ āϕ⧋āĻĄā§‡āϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĻāĻŋā§Ÿā§‡ āĻ¸ā§āĻŸā§‹āϰ āĻšā§Ÿ, āϏ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āϝ⧇āχ āϞāĻžāχāύ⧇ āĻĢāĻžāĻ‚āĻļāύāϟāĻž āĻ•ā§āϰāĻŋā§Ÿā§‡āϟ āĻ•āϰ⧇āĻ›āĻŋ āϤāĻžāϰ āφāϗ⧇āχ āχāύāĻ­ā§‹āĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ! đŸ”Ĩ

āϝāĻ–āύ āφāĻŽāϰāĻž var keyword āĻĻāĻŋā§Ÿā§‡ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāĻž āĻāĻ•āϟāĻž āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞāϕ⧇ āϤāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ⧇āĻļāύ⧇āϰ āφāϗ⧇āχ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻŋ, āϏ⧇ āϤāĻžāϰ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϝ⧇āχ āĻ­ā§āϝāĻžāϞ⧁ (undefined) āĻĻāĻŋā§Ÿā§‡ āĻ¸ā§āĻŸā§‹āϰ āĻšā§Ÿā§‡āĻ›āĻŋāϞ, āϤāĻžāχ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇āĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻāχ āĻ•āĻžāϰāϪ⧇ āĻŽāĻžāĻā§‡āĻŽāĻ§ā§āϝ⧇ “āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāĻ¤â€ āĻĢāϞāĻžāĻĢāϞ āĻĻ⧇āĻ–āĻž āϝāĻžā§ŸāĨ¤ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āχ āĻāϰ āĻŽāĻžāύ⧇ āĻšāĻšā§āϛ⧇ āφāĻĒāύāĻŋ āĻ…āύāĻŋāĻšā§āĻ›āĻžāĻ•ā§ƒāϤ āĻ­āĻžāĻŦ⧇ āĻāϟāĻžāϕ⧇ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāϛ⧇āύ( āφāĻĒāύāĻŋ āύāĻŋāĻļā§āϚāχ āϚāĻžāύ āύāĻž āϝ⧇ āĻāϰ āĻ­ā§āϝāĻžāϞ⧁ undefined āĻšā§‹āĻ• ) đŸ˜Ŧ

var keyword āĻĻāĻŋā§Ÿā§‡ āφāĻŽāϰāĻž āĻāĻ•ā§āϏāĻŋāĻĄā§‡āĻ¨ā§āϟāĻžāϞāĻŋ āϝāĻžāϤ⧇ āϕ⧋āύ undefined āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞāϕ⧇ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰ⧇ āύāĻž āĻĢ⧇āϞāĻŋ, āϏ⧇āϜāĻ¨ā§āϝ āϝāĻ–āύāχ āϕ⧋āύ uninitialized āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞāϕ⧇ access āĻ•āϰāϤ⧇ āϝāĻžāχ, āĻāĻ•āϟāĻž ReferenceError āĻĨā§āϰ⧋ āĻšā§ŸāĨ¤ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ⧇āĻļāύ⧇āϰ āφāϗ⧇āϰ “zone” āϕ⧇ āĻŦāϞāĻž āĻšā§Ÿ temporal dead zone : āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ(āĻāĻŦāĻ‚ ES6 class āĻ“ ) āφāĻĒāύāĻŋ āϤāĻžāĻĻ⧇āϰ āχāύāĻŋāĻļāĻŋ⧟āĻžāϞāĻžāχāĻœā§‡āĻļāύ⧇āϰ āφāϗ⧇ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻžāĨ¤

āϝāĻ–āύ āχāĻžā§āϜāĻŋāύ āϕ⧋āĻĄā§‡āϰ āϝ⧇āχ āϞāĻžāχāύ⧇ āφāϏāϞ⧇āχ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞāϟāĻž āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇, āϏ⧇āχ āϞāĻžāχāύ āĻĒ⧜āϤ⧇ āĻĒ⧜āϤ⧇ āφāĻ—āĻžā§Ÿ, āϤāĻ–āύ āĻŽā§‡āĻŽā§‹āϰāĻŋāϰ āĻ­ā§āϝāĻžāϞ⧁āϗ⧁āϞ⧋ āĻ“āĻ­āĻžāϰāϰāĻžāχāϟ āĻšā§Ÿā§‡ āϝāĻžā§Ÿ āϤāĻžāϰ āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻ­ā§āϝāĻžāϞ⧁ āĻĻāĻŋā§Ÿā§‡āĨ¤

(āĻāĻš āĻšā§‡! āĻāĻ–āĻžāύ⧇ āϤ⧋ āύāĻžāĻŽā§āĻŦāĻžāϰ ā§­ āĻšāĻ“ā§ŸāĻžāϰ āĻ•āĻĨāĻž! āĻĻā§āϰ⧁āϤ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇ āĻĢ⧇āϞāĻŦ! đŸ˜Ŧ)


āĻ–āϤāĻŽ! 🎉 āϛ⧋āĻŸā§āϟ āϏāĻžāĻŽāĻžāϰāĻŋāσ

āφāĻļāĻž āĻ•āϰāĻŋ, āĻāĻ–āύ āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻĻ⧇āĻ–āϞāĻžāĻŽ āϕ⧋āĻĄ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻšāĻ“ā§ŸāĻžāϰ āϏāĻŽā§Ÿ āφāϏāϞ⧇ āĻ•āĻŋ āĻšā§Ÿ, hoisting āĻļāĻŦā§āĻĻāϟāĻž āĻāĻ–āύ āϤ⧁āϞāύāĻžāĻŽā§‚āϞāĻ• āĻ•āĻŽ āĻ…āĻ¸ā§āĻĒāĻˇā§āϟāĨ¤ āĻŦāϰāĻžāĻŦāϰ⧇āϰ āĻŽāϤ⧋āχ, āĻāĻ–āύāĻ“ āϝāĻĻāĻŋ āύāĻž āĻŦ⧁āĻā§‡āύ āϚāĻŋāĻ¨ā§āϤāĻžāϰ āĻ•āĻŋāϛ⧁ āύ⧇āχāĨ¤ āϝāϤ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇āύ āĻāϟāĻž āύāĻŋā§Ÿā§‡ āϤāϤāχ āϏāĻšāϜ āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇ āĻŦāĻŋāώ⧟āϟāĻžāĨ¤ āϝ⧇āϕ⧋āύ āϏāĻŽāĻ¸ā§āϝāĻžā§Ÿ āφāĻŽāĻžāϕ⧇ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āφāĻŽāĻŋ āϏāĻžāύāĻ¨ā§āĻĻ⧇ āĻāĻ—āĻŋā§Ÿā§‡ āφāϏāĻŦāĨ¤