This is NOT about micro-optimizations.
It’s about callback overhead.
Example
items.forEach(item => process(item));
vs
for (let i = 0; i < items.length; i++) {
process(items[i]);
}
Why
-
forEachcreates a function call per iteration -
Harder for JS engines to optimize
-
No early break support
When it matters
-
Large arrays
-
Hot paths
-
Real-time processing
Rule
Readability first.
But measure before choosing.
