Skip to main content

Command Palette

Search for a command to run...

Hoisting in JavaScript!

Updated
•2 min read•View as Markdown
Hoisting in JavaScript!
M

📚 Lifelong Learner: In the ever-evolving realm of front-end development, I consider myself a perpetual student. Learning isn't just a phase; it's a way of life. Whether it's a new JavaScript feature or a design principle, I devour knowledge like a hungry coder.

What is Hoisting in JavaScript?

Hoisting is a JavaScript mechanism where variable and function declarations are moved to the top of their scope before code execution.

This means that in JavaScript, you can use variables and functions before you declare them. For example:

foo();

function foo() {
  console.log("Hello"); 
}

// Output: Hello

Here we are able to call the foo() function before it is declared. This is because of hoisting.

Variable Hoisting

JavaScript hoists variable and function declarations, not initializations. This means:

  • Variables declared with var are hoisted to the top and initialized with undefined.

  • Variables declared with let and const are also hoisted but not initialized. Accessing them before initialization results in a reference error.

Function Hoisting

Function declarations are hoisted and can be called before declaration. Function expressions are not hoisted and cannot be called before declaration.

Hoisting allows you to define functions at the end of a file but call them at the top, making your code more readable.

Best Practices

To avoid bugs caused by hoisting, it's best to:

  • Declare all variables at the top of each scope

  • Avoid using variables before declaration

  • Use let and const instead of var

  • Use named function expressions over function declarations

For example:

let foo;

foo = 1;

console.log(foo);

Instead of:

console.log(foo);

var foo;

foo = 1;

In summary, hoisting refers to the behavior where variable declarations and function definitions are moved to the top of their scope. While this can enable some readable code patterns, it can also introduce bugs if not used carefully. Declaring variables at the top of each scope and using let/const instead of var can help avoid issues.

Hope this helps explain hoisting in JavaScript! Let me know if you have any other questions.