Does return stop a loop?
Yes, return
stops execution and exits the function. return
always** exits its function immediately, with no further execution if it's inside a for loop.
It is easily verified for yourself:
function returnMe() {
for (var i = 0; i < 2; i++) {
if (i === 1) return i;
}
}
console.log(returnMe());
** Notes: See this other answer about the special case of try/catch/finally
and this answer about how forEach loops has its own function scope will not break out of the containing function.
In most cases (including this one), return
will exit immediately. However, if the return is in a try
block with an accompanying finally
block, the finally
always executes and can "override" the return
in the try
.
function foo() {
try {
for (var i = 0; i < 10; i++) {
if (i % 3 == 0) {
return i; // This executes once
}
}
} finally {
return 42; // But this still executes
}
}
console.log(foo()); // Prints 42