Stop a loop as soon as a target is found.

break-loop `break` exits the nearest loop immediately. Code after the loop continues with the values built so far.

Break in Loops

stopAt
break_loop.js
Replay: real traced execution (multi-file project)
const stopAt = 3;
let seen = 0;
for (let i = 1; i <= 5; i += 1) {
  seen = i;
  if (i === stopAt) {
    break;
  }
}

console.log("stopAt=" + stopAt);
console.log("seen=" + seen);
const stopAt = 2;
let seen = 0;
for (let i = 1; i <= 5; i += 1) {
  seen = i;
  if (i === stopAt) {
    break;
  }
}

console.log("stopAt=" + stopAt);
console.log("seen=" + seen);
const stopAt = 5;
let seen = 0;
for (let i = 1; i <= 5; i += 1) {
  seen = i;
  if (i === stopAt) {
    break;
  }
}

console.log("stopAt=" + stopAt);
console.log("seen=" + seen);
  1. stopAt ← 3, seen ← 0

    1const stopAt→ 3 = 3; //@stopAt=2, 52let seen→ 0 = 0;3for (let i = 1; i <= 5; i += 1) {
  2. seen ← 1

    pass 1 of 3
    1const stopAt = 3; //@stopAt=2, 52let seen = 0;3for (let i1 = 1; i <= 5; i += 1) {4  seen = i1;5  if (i === stopAt) {
    values this step1seen
    All 3 passes — pass 1 is the card above
    passistopAtseen
    111
    222
    3333
  3. if (i === stopAt)

    3for (let i = 1; i <= 5; i += 1) {4  seen = i;5  if (i3 === stopAt3) {6    break;7  }
  4. console.log("stopAt=" + stopAt);

    7  }8}910console.log("stopAt=" + stopAt3);11console.log("seen=" + seen3);
    outputstopAt=3
    seen=3
  1. stopAt ← 2, seen ← 0

    1const stopAt→ 2 = 2;2let seen→ 0 = 0;3for (let i = 1; i <= 5; i += 1) {
  2. seen ← 1

    pass 1 of 2
    1const stopAt = 2;2let seen = 0;3for (let i1 = 1; i <= 5; i += 1) {4  seen = i1;5  if (i === stopAt) {
    values this step1seen
  3. seen ← 2

    pass 2 of 2
    1const stopAt = 2;2let seen = 0;3for (let i2 = 1; i <= 5; i += 1) {4  seen = i2;5  if (i === stopAt) {
    values this step2seen
  4. if (i === stopAt)

    3for (let i = 1; i <= 5; i += 1) {4  seen = i;5  if (i2 === stopAt2) {6    break;7  }
  5. console.log("stopAt=" + stopAt);

    7  }8}910console.log("stopAt=" + stopAt2);11console.log("seen=" + seen2);
    outputstopAt=2
    seen=2
  1. stopAt ← 5, seen ← 0

    1const stopAt→ 5 = 5;2let seen→ 0 = 0;3for (let i = 1; i <= 5; i += 1) {
  2. seen ← 1

    pass 1 of 5
    1const stopAt = 5;2let seen = 0;3for (let i1 = 1; i <= 5; i += 1) {4  seen = i1;5  if (i === stopAt) {
    values this step1seen
    All 5 passes — pass 1 is the card above
    passistopAtseen
    111
    222
    333
    444
    5555
  3. if (i === stopAt)

    3for (let i = 1; i <= 5; i += 1) {4  seen = i;5  if (i5 === stopAt5) {6    break;7  }
  4. console.log("stopAt=" + stopAt);

    7  }8}910console.log("stopAt=" + stopAt5);11console.log("seen=" + seen5);
    outputstopAt=5
    seen=5