1. Introduction
break and continue are control-flow keywords that let you alter the normal, top-to-bottom execution of a loop from the inside. break immediately terminates the nearest enclosing loop (or switch statement), jumping to the code right after it. continue skips the rest of the current iteration's body and jumps straight to the next iteration's condition check (or update step, in a for loop).
Cricket analogy: A rain-stoppage declared mid-innings ends the match entirely on the spot, like break, while a single wide ball just gets redone without ending the over, moving straight to the next legal delivery, like continue.
Both are especially useful for early exits: stopping a search as soon as a match is found (break), or skipping items that don't meet some criteria without wrapping the rest of the loop body in an extra if block (continue).
Cricket analogy: A scout stops scanning the entire domestic circuit the moment they spot a genuine fast-bowling prospect, like break, while skipping over players who don't meet the pace threshold saves them from separately filtering the list, like continue.
2. Syntax
for (let i = 0; i < items.length; i++) {
if (someCondition) {
break; // exits the loop entirely
}
if (anotherCondition) {
continue; // skips to the next iteration
}
// normal processing
}
// Labeled break/continue for nested loops
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) continue outer; // skips to next i, not just next j
if (i === 2) break outer; // exits BOTH loops
}
}3. Explanation
By default, break and continue only affect the innermost loop that directly contains them. This becomes a problem with nested loops: a plain break inside an inner loop only exits that inner loop, and the outer loop keeps running its remaining iterations as normal — it does not stop the outer loop.
Cricket analogy: A fielder breaking off a chase to stop one ball rolling to the boundary doesn't stop the entire innings from continuing; the match, the outer loop, carries on with the next delivery regardless.
To control an outer loop from within a nested inner loop, JavaScript supports labeled statements. A label is an identifier followed by a colon placed immediately before a loop (e.g., outer: for (...) { ... }). Using break outer; or continue outer; from inside a nested loop then targets that specific labeled loop instead of the innermost one.
Cricket analogy: A team captain calling a specific fielding change by name, third man come in, targets exactly that position rather than the whole field, just as a labeled break outer targets a specifically named outer loop instead of the nearest one.
Labeled break/continue are the standard way to escape or skip iterations of an outer loop from deep inside nested loops without resorting to extra boolean flag variables or throwing exceptions. They work with for, while, and do-while loops, and labeled break can also be used to exit any labeled block statement, not just loops.
4. Example
// continue: skip even numbers
for (let i = 1; i <= 5; i++) {
if (i % 2 === 0) continue;
console.log('odd:', i);
}
// break: stop as soon as target is found
const nums = [3, 7, 11, 15, 20];
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 11) {
console.log('found at index', i);
break;
}
}
// labeled break in nested loops
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
console.log('breaking outer at', i, j);
break outer;
}
console.log('checking', i, j);
}
}5. Output
odd: 1
odd: 3
odd: 5
found at index 2
checking 0 0
checking 0 1
checking 0 2
checking 1 0
breaking outer at 1 16. Key Takeaways
- break exits the nearest enclosing loop (or switch) immediately, skipping any remaining iterations.
- continue skips only the rest of the current iteration and proceeds to the next one.
- By default, break and continue affect only the innermost loop they are directly inside.
- A label (name: before a loop) combined with break label; or continue label; lets you target an outer loop from a nested inner loop.
- Labeled break can also exit a plain labeled block statement, not just loops.
- Overusing break/continue can hurt readability; prefer them for clear early-exit or skip logic rather than complex control flow.
Practice what you learned
1. What does the continue statement do inside a loop?
2. In a nested loop, what does a plain (unlabeled) break statement inside the inner loop do?
3. How do you make a break statement exit an outer loop from within a nested inner loop?
4. What does the following print? for (let i = 1; i <= 5; i++) { if (i % 2 === 0) continue; console.log(i); }
5. Besides loops, what else can a labeled break statement exit?
Was this page helpful?
You May Also Like
for Loop in JavaScript
Master the classic for loop along with for...in and for...of, and understand the key differences between iterating indexes, keys, and values.
while and do-while Loops in JavaScript
Understand condition-controlled looping with while and do-while, including the crucial difference in when the condition is checked and how to avoid infinite loops.
switch Statement in JavaScript
Learn how the switch statement compares a value against multiple cases using strict equality, and why break is essential to prevent fall-through.
Common Array Methods in JavaScript
Explore the most-used array methods, split into mutating methods that change the original array and non-mutating methods that return a new array.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingSnowflake Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics