for...of vs for...in
Choosing the right iteration syntax
const arr = ["a", "b", "c"];
arr.custom = "oops"; // simulate pollution
// for...of: values only, ignores custom
for (const value of arr) {
console.log("of:", value);
}
// for...in: picks up indices AND custom — usually bad
for (const key in arr) {
console.log("in:", key);
}
// Correct: index + value
for (const [i, v] of arr.entries()) {
console.log(`${i} -> ${v}`);
}
// Objects: use Object.entries
const user = { name: "Alice", age: 30 };
for (const [key, value] of Object.entries(user)) {
console.log(`${key}: ${value}`);
}
// Works on strings, Maps, Sets
for (const char of "hi") console.log(char);
for (const val of new Set([1, 2, 3])) console.log(val);