Variables — let, const, var
How to store information in JavaScript — and why const is the right default, let is for things that change, and var is legacy.
Storing information in variables
Programs need to remember things. A variable is how you give a piece of information a name so you can use it later. Think of it like a labelled box — you put something in, you can take it out or look at it later by using the label.
Declaring a variable
The word "declare" just means "create." You declare a variable using
const, let, or var, followed by the name you're giving it.
// const — for values that will NOT change
const greeting = "Hello, world!";
const maxScore = 100;
const pi = 3.14159;
// let — for values that WILL change
let currentScore = 0;
let playerName = "Alice";
let isGameOver = false;The rule: use const by default
Here's the simple rule: start with const. Switch to let only if you need to reassign.
Why? Because if something can't change, it shouldn't change. const makes that explicit — if you or a colleague accidentally try to reassign it, JavaScript will throw an error immediately, before the bug causes mysterious problems further along.
const userName = "Alice";
userName = "Bob"; // ✗ TypeError: Assignment to constant variable
// JavaScript catches this immediatelylet score = 0;
score = score + 10; // ✓ let allows reassignment
score += 5; // ✓ shorthand: score = score + 5
score++; // ✓ shorthand: score = score + 1
console.log(score); // 16What const actually means — a common misconception
const means the variable binding is constant — you can't point the
variable to a different value. But if the value is an object or array, the contents
of that object or array can still change:
const person = { name: "Alice", age: 30 };
// ✓ Changing a property is fine — we're not reassigning person itself
person.age = 31;
person.city = "Mumbai";
console.log(person); // { name: 'Alice', age: 31, city: 'Mumbai' }
// ✗ Reassigning person is not fine
person = { name: "Bob" }; // TypeError: Assignment to constant variableThink of const as "the label is stuck on this box" — you can change what's
inside the box, but you can't point the label at a different box.
Naming variables well
Choose names that describe what the variable holds. This is one of the most important habits in programming.
// ✗ Bad: what does x mean? What is d?
let x = 9.99;
let d = 0.1;
let t = x + (x * d);
// ✓ Good: instantly readable
const itemPrice = 9.99;
const taxRate = 0.1;
const totalPrice = itemPrice + (itemPrice * taxRate);
console.log("Total:", totalPrice); // Total: 10.989JavaScript convention: camelCase — first word lowercase, each new word capitalised.
firstName, totalScore, isUserLoggedIn. Constants that
are genuinely fixed configuration values sometimes use UPPER_SNAKE_CASE: MAX_RETRIES,
API_BASE_URL.
What happens if you use a variable before declaring it?
console.log(age); // ✗ ReferenceError: Cannot access 'age' before initialisation
const age = 25;With const and let, you get a clear error. Always declare before use.
(With var it would print undefined instead of erroring — one of
the reasons var is avoided.)
Official Sources
- MDN Web Docs — let
- MDN Web Docs — const
- MDN Web Docs — var
- ECMAScript 2024 — Variable Statement (§14.3)
- ECMAScript 2024 — Environment Records (§9.1)
The Codex links only to official documentation and the ECMAScript specification. No third-party tutorials.