Mastering Variable Declarations in JavaScript
Simplifying the mysteries of var, let, and const—scoping, hoisting, and best practices for modern JS.
Variable declaration is the first thing we learn in JavaScript, yet it remains one of the most misunderstood topics. Let's break down var, let, and const.
The Contenders
- var: Function-scoped, can be re-declared, and is hoisted (initialized as
undefined). - let: Block-scoped, can be updated but not re-declared, and is hoisted (but enters the "Temporal Dead Zone").
- const: Block-scoped, cannot be updated or re-declared. It must be initialized at declaration.
Hoisting in Action
console.log(x); // undefined
var x = 5;
// console.log(y); // ReferenceError: Cannot access 'y' before initialization
let y = 10;Recommendation
- Use
constby default. It makes your code more predictable. - Use
letonly when you know the variable needs to be reassigned (e.g., in a loop). - Avoid
varin modern JavaScript.
By understanding how these keywords interact with the JavaScript engine, you can write cleaner, bug-free code.