1 Execution Contexts Hoisting Scopes and Closures in JavaScript