Skip to main content
← ⚑ JavaScript & the browserΒ·Module C6 Β· Lesson 1
TaskGiven const arr = [1,2,3] and const obj = {a: 1, b: 2, c: 3}: use for-of to log each value of arr; use Object.entries + for-of to log "<key>=<value>" for each obj entry.

for-of vs forEach vs for-in

100 XP7 min
Theory

Three loops, three jobs

for-of walks the values of any iterable. Works on Array, Map, Set, string, NodeList, generators β€” anything implementing the iteration protocol.

for (const x of [10, 20, 30]) console.log(x); // 10, 20, 30
for (const ch of "hi")        console.log(ch); // "h", "i"

forEach is a method on Array (and Map, Set) with a callback. It's older and less flexible β€” you can't break, continue, or await inside it without ceremony.

[10, 20, 30].forEach((x) => console.log(x));

for-in walks the enumerable property keys of an object. Use it on plain objects, NOT arrays β€” it also picks up inherited properties.

const obj = { a: 1, b: 2 };
for (const key in obj) console.log(key); // "a", "b"

The rule

  • Need values from a collection β†’ for-of.
  • Need to await/break/early-exit β†’ for-of.
  • Need object keys β†’ Object.keys(obj) + for-of, or for-in if you trust the source.
  • Need a one-liner side effect on an array β†’ forEach.

for-of is the default. forEach is rarely the right pick once you know for-of.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.