Does return stop a loop?

frenchie picture frenchie · Jul 30, 2012 · Viewed 148.8k times · Source

Suppose I have a loop like this:

for (var i = 0; i < SomeArrayOfObject.length; i++) {

  if (SomeArray[i].SomeValue === SomeCondition) {

     var SomeVar = SomeArray[i].SomeProperty;
     return SomeVar;
  }
}

Quick question: does the return stop the execution of the loop in and of itself?

Answer

Michael Berkowski picture Michael Berkowski · Jul 30, 2012

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.