JavaScript Variables πΒΆ
Prerequisites: JavaScript Syntax
Mentor's Note: In the old days, JavaScript had many bugs because of how it handled variables. In 2015 (ES6), new rules were added to make it safer. Let's learn the modern way! π‘
π The Scenario: The Note vs. The Tablet πΒΆ
Imagine you are a detective at a crime scene.
let(The Post-it Note) π: You write down your current clue. As you find better info, you Scratch out the old note and write a new one. (Changeable). π¦const(The Stone Tablet) π§±: You carve the crime's location in stone. It is Permanent. No one can change it. (Unchangeable). π¦var(The Old Graffiti) ποΈ: It's messy, it's everywhere, and sometimes it appears in places you didn't expect! (Avoid). β
π Concept ExplanationΒΆ
1. const (The Modern Standard)ΒΆ
Always use const by default. It prevents you from accidentally overwriting your data.
- Must be initialized.
- Cannot be reassigned.
2. letΒΆ
Use let only when you know the value will change (e.g., a loop counter or a score).
3. Scope (The "Wall" Rule)ΒΆ
Modern variables (let/const) are Block Scoped. This means if you create a variable inside { }, it is trapped there and cannot "leak" outside. π§±
π¨ Visual Logic: Block ScopeΒΆ
graph TD
A[Main Program] --> B{ { Code Block } }
B --> C["let secret = 'shh' π€«"]
C -. "X" .-> D[Main Program tries to see secret]
D -- "ReferenceError!" --> E[End π]
π» Implementation: The Storage LabΒΆ
// π Scenario: Tracking a Game Score
// π Action: Using const for identity and let for stats
const playerName = "Vishnu"; // π§± Won't change
let score = 0; // π Will increase
// Changing data
score = score + 10; // β
Allowed
// playerName = "Ankit"; // β ERROR!
console.log(`${playerName} scored: ${score} π`);
π Sample Dry RunΒΆ
| Instruction | Variable | Memory State | Result |
|---|---|---|---|
const id = 1 |
id |
1 (Locked) |
Success β |
let val = 5 |
val |
5 (Unlocked) |
Success β |
val = 6 |
val |
6 |
Success β |
id = 2 |
id |
1 |
CRASH π₯ |
π Technical AnalysisΒΆ
- Hoisting:
varis hoisted and initialized asundefined.letandconstare hoisted but stay in the Temporal Dead Zone, meaning you get an error if you use them before the declaration line. β±οΈ
π― Practice Lab π§ͺΒΆ
Task: The Price Calculator
Task: Create a const for TAX_RATE = 0.18. Create a let for price = 100. Increase the price by 20% and then calculate the final amount.
Hint: let final = price * (1 + TAX_RATE). π‘
π‘ Pro Tip: "Good names are the best documentation. If you name your variables well, your code tells a story." - Anonymous