In JavaScript, both const
and let
are used to declare variables, but they have some key differences:
- Mutability:
const
: Variables declared withconst
are constant and cannot be reassigned after they are initially assigned a value. This means that once you assign a value to aconst
variable, you cannot change that value.let
: Variables declared withlet
are mutable, which means you can reassign them with a new value at any time.
- Block Scoping:
- Both
const
andlet
are block-scoped, which means they are only accessible within the block (enclosed by curly braces) where they are defined. This is different fromvar
, which is function-scoped.
- Both
- Temporal Dead Zone (TDZ):
- Variables declared with
const
andlet
are hoisted to the top of their containing block or function, but they are not initialized until they reach the actual declaration. This results in a “Temporal Dead Zone” where you cannot access the variable before it is declared.
- Variables declared with
Here’s an example to illustrate the differences:
// Using const const a = 10; a = 20; // Error: Cannot reassign a constant variable // Using let let b = 30; b = 40; // Valid: You can reassign a variable declared with let // Block scope if (true) { const x = 50; // x is only accessible within this block let y = 60; // y is only accessible within this block } // Temporal Dead Zone console.log(c); // Error: Cannot access 'c' before initialization const c = 70;