📟 Variable Declaration
Useful resources:
var
Scope of var
var
declarations are global or function scope.
Global Scope
The scope is global when var
variable is declared outside of a function.
Global Scope
var myVar = "Global Variable";
console.log(myVar); // Global Variable
console.log(window.myVar); // Global Variable
Function Scope
The scope is function scope when var
variable is declared inside a function. This means that it is only available within that function.
Re-declared and Updated
var
variable can be re-declared and updated
note
A repeated var
declaration of the same identifier name in a scope is effectively a do-nothing operation.
After 'pre-process' repeated var
var studentName;
var studentName; // pointless, no-op
studentName = "Frank";
console.log(studentName);
// Frank
console.log(studentName); // Frank
Hoisting of var
Hoisting: Yet Another Metaphor
It is useful to think of hoisting as a series of actions JS takes in setting up the program before execution.
- The identifier is hoisted to the top of the scope
- It's automatically initialized to the value
undefined
. So that the variable can be used throughout the entire scope.
Before 'pre-process'
age = 20;
console.log(age);
// 20
var age = 30;
After 'pre-process'
var age; // hoisted declaration
age = 20;
console.log(age);
age = 30;
info
However, function
declarations are entirely hoisted to the top of each scope. And they are hoisted first, then variables are hoisted immediately after all the functions.
Before 'pre-process'
age = 20;
sayAge(); // age is 20
function sayAge() {
console.log(`age is ${age}`);
}
var age;
After 'pre-process'
function sayAge() {
console.log(`age is ${age}`);
}
var age;
age = 20;
sayAge(); // age is 20