Loops are how your code handles repetition — lists, data, UI elements, API results… everything.
Most beginners learn loops as syntax first.
Real developers learn loops by
breaking apps with them 😄
Infinite loops, skipped items, weird indexes — we’ve all been there.
Let’s understand loops the way they’re actually used in real projects.
🧠 What Are Loops (In Practical Terms)?
Loops let you run the same logic multiple times without repeating code.
for (let i = 0; i < 3; i++) {
console.log(i);
}
Instead of writing the same statement again and again, loops let your code do the work.
🔂 The for Loop — Full Control
The classic loop. Still very relevant.
for (let i = 0; i < 5; i++) {
console.log(i);
}
Best used when:
- You need an index
- You know how many times to run
- You want full control
🔄 The while Loop —
Condition-Based
Runs as long as a condition is true.
let count = 0;
while (count < 3) {
console.log(count);
count++;
}
Great for:
- Unknown number of iterations
- Waiting for a condition to change
⚠️ Forgetting to update the condition = infinite loop.
🔁 The do...while Loop — Runs
at Least Once
let value = 5;
do {
console.log(value);
value++;
} while (value < 3);
Even though the condition is false, it still runs once.
Useful, but less common.
📦 Looping Over Arrays (Real-World Usage)
for...of — Clean and Modern
const skills = ["JS", "React", "Node"];
for (const skill of skills) {
console.log(skill);
}
This is my go-to loop for arrays when I don’t need the index.
forEach — Callback Style
skills.forEach(skill => {
console.log(skill);
});
Readable and expressive — but you can’t break out of it.
🧭 Looping Over Objects
const user = { name: "Sam", age: 25 };
for (const key in user) {
console.log(key, user[key]);
}
for...in works for objects —
just be mindful of inherited properties in advanced cases.
🧠 When Loops Should Become Methods
Modern JavaScript often prefers array methods over manual loops.
const activeUsers = users.filter(u => u.active);
Cleaner. More expressive.
But under the hood — it’s still looping.
Personally, I reach for map,
filter, or
reduce first when intent
matters more than control.
🚨 Common Loop Mistakes Developers Actually Make
❌ Off-by-one errors
for (let i = 0; i <= arr.length; i++) // ❌
= causes bugs more
often than you’d expect.
❌ Modifying arrays while looping
arr.splice(i, 1);
This shifts indexes and skips elements.
❌ Using the wrong loop type
Using forEach when you need
break is a classic mistake.
🧪 Advanced Insight: break and
continue
for (let i = 0; i < 5; i++) {
if (i === 2) continue;
if (i === 4) break;
console.log(i);
}
-
continueskips the current iteration breakexits the loop entirely
🧑💻 Personal Dev Take
for...of, I know
we’re reading data.map, I know
something is being transformed.That clarity matters more than cleverness.
🎯 Final Thoughts
🚀 Best Practice Summary
✅ Use for when you need
full control
✅ Prefer for...of for
clean array iteration
✅ Avoid mutating data while looping
✅ Use array methods when intent matters
✅ Watch out for off-by-one errors
0 Comments