Advanced Concepts

Hoisting in JavaScript: Variable Hoisting and Function Hoisting

What is Hoisting?

Hoisting is JavaScript's default behavior of moving declarations (not initializations) to the top of their scope before code execution.

Variable Hoisting

console.log(x); // undefined, not an error
var x = 5;

console.log(y); // ReferenceError
let y = 5;

var declarations are hoisted and initialized as undefined; let and const are hoisted but stay in a "temporal dead zone" until their declaration line executes.

Function Hoisting

greet(); // works fine

function greet() {
    console.log("Hello!");
}

Function declarations are fully hoisted, including their body — but function expressions and arrow functions assigned to variables are not.

Ready to master real-world JavaScript development?

Learn JavaScript hands-on with mentor-led, live sessions.

Explore Course