4

Compiler threw me error when I tried:

['a', 'b', 'c'].forEach(function (x) {
   if (x == 'b') {
      break //error message: Can't have 'break' outside of loop
   }
})

Valid syntax:

var x = ['a', 'b', 'c'];
for (var i = 0; i < x.length; i++) {
    if (x[i] == 'b') {
        break
    }
}

So, why?

1

4 Answers 4

7

The forEach may lead you to believe that you are inside the context of a for loop, but this is not the case.

It is simply a method that is executed for each of the elements in the array. So inside the function, you only have control over the current iteration but can in no way cancel or break out of the method subscription for the other array elements.

Sign up to request clarification or add additional context in comments.

Comments

1

The explanation for your question was well given by @Wim Hollebrandse.

If you want to break the loop, try using some instead of forEach:

['a', 'b', 'c'].some(function (x) {
  if (x == 'b') {
    return true; 
  }
});

Comments

0

That's because you are in a function. The break keyword is not available here (outside of a loop)

Comments

0

Because it's a method in the Array prototype.

To break out, throw an exception.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.