'javascript hoisting for global variable
I was wondering how javascript hoisting works for global variable.
Let's say I have following code snippet:
var a = 5;
function print(){
console.warn("a",a,b);
var a = 10;
b=5;
console.warn("a",a);
}
print();
In this case I am getting error "b is not defined". I wonder why Javascript hoisting is not working for global variable. I tried to look for this but getting results only for variable hoisting. Any thoughts??
Solution 1:[1]
var statements are hoisted. function declarations are hoisted. Assignments are not hoisted (to the extent that if you combine a var statement with an assignment (var foo = 1) then the declaration part is hoisted but the assignment is not).
Solution 2:[2]
Your code is reinterpreted as:
function print(){
var b
console.warn("a",a,b); // b is not assigned yet so it's undefined.
var a = 10;
b=5;
console.warn("a",a);
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Quentin |
| Solution 2 | James Tang |
