What is a variable scope? The visibility and accessibility of a variable is determined by its scope. JavaScript has three scopes: Global scope Local scope and Block scope Global Scope A variable that can be accessible everywhere in the script. Local Scope If you declare a variable inside a function are local to the function. They are called local variables. Output: I am from say I am from global Scope Chain If interpreter cannot find a variable in its local context, then it looks for it in parent contexts until it's found. This is called scope chain. Output: Hello I am message In the above script, the JavaScript performs the following: It looks up for the variable message in the current context (Functional Execution Context) of the say(). But it cannot find it. So it goes out of the function and looks in the outer execution context which is the global execution context. It found the message variable there. The way that JavaScript resolves a variable is by looking at in its c
Hoisting JavaScript Hoisting refers to the process where the interpreter allocates memory for variables and function declarations prior to the execution of the code. Declarations that are made using the var keyword are initialized with the default value of undefined Declarations made using the let and the const keywords are not initialized as a part of the hoisting Hoisting takes place during the creation phase of the Execution Context. consider the following script: output: undefined Steps involved in the execution of the above script: A new Global Execution Context is created. num variable is initialized with undefined . In the execution phase, the code is executed line-by-line. In the first line it logs undefined to the console. Line two is skipped as it already defined num in the creation phase. In line three a value of 6 is assigned to num. let and const keywords let and const keywords are hoisted but not initialized Consider the following script: output: ReferenceError: