Hoisting

 
Allows us to access functions and variables before they are created.
2 things that are hoisted in JavaScript:
  • Function declarations
  • Variable declarations
 
Function hoisting
sayHi();

function sayHi() {
  console.log('Hi');
}

// Output - Hi
The above happens because when we run the JavaScript file, JavaScript compiler will take all function declarations and move them to the top of the file available for use.
Suggestion: Always define functions before using them.
Note: Functions made using a variable are not hoisted.
add(10,20);

const add = function(a,b) {
	return a + b;
}

//Output - Uncaught ReferenceError: Cannot access 'add' before initialization
 
 
Variable hoisting
console.log(age);
var age = 10;

// Output - undefined
This happens because JavaScript hoists the variable declaration but not the actual setting of the values or assignment. This essentially means this happens:
var age;
console.log(age);
age = 10;

// Output - undefined