Using Continue in JavaScript forEach()
JavaScript's forEach()
function executes a function on every element in an
array. However, since forEach()
is a function rather than a loop, JavaScript errors out if you try to use continue
:
[1, 2, 3, 4, 5].forEach(v => {
if (v % 2 !== 0) {
// SyntaxError: Illegal continue statement: no surrounding iteration statement
continue;
}
});
We recommend using for/of
loops to iterate through an array unless you have a good reason not to. However, if you find yourself stuck with a forEach()
and need to skip to the next iteration,
here's two workarounds.
1. Use return
For practical purposes, return
in a forEach()
callback is equivalent to continue
in a conventional for
loop.
When you return
, you skip the rest of the forEach()
callback and JavaScript goes on to the next iteration of the loop.
// Prints "2, 4"
[1, 2, 3, 4, 5].forEach(v => {
if (v % 2 !== 0) {
return;
}
console.log(v);
});
Using return
is the easiest approach, but it isn't the most idiomatic use of functional programming patterns. Using
if
and return
typically means you're better off just using a for
loop.
2. Filter Out Unwanted Values
Instead of thinking about how to skip forEach()
when a certain condition occurs, functional programming encourages you to instead think about how to filter()
out values before calling forEach()
. Using if
in a forEach()
callback makes functional programming purists cringe, because you're missing the key benefit of using functional patterns:
composition.
Instead of using an if
statement, just filter()
out the values you don't want forEach()
to execute on.
// Prints "2, 4"
[1, 2, 3, 4, 5].filter(v => v % 2 === 0).forEach(v => {
console.log(v);
});