Reputation: 1
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?
Upvotes: 4
Views: 83
Reputation: 5357
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;
}
});
Upvotes: 1
Reputation: 12082
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.
Upvotes: 7
Reputation: 2320
Because it's a method in the Array prototype.
To break out, throw an exception.
Upvotes: 0
Reputation: 11916
That's because you are in a function. The break
keyword is not available here (outside of a loop)
Upvotes: 0