Hoisting
↔ (mechanism) to access Variable before Declaration
aka Hoisted
before execution, code is scanned for variable declarations
each Variable, is assigned a new property in VE
Hoisting differs per variable type
TDZ
Region of Code outside Scope of a variable, variable uninitialized from Scope start to Declaration
Historically, hoisting was added to enable programming techniques such as Mutual Recursion (and possibly improve code readability)
References
Hoisting let & const variables
↔ !technically Hoisted as<uninitalized\>
via TDZ Block-scoped