Loops and Ranges
Break in Loops
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
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);
stopAt ← 3, seen ← 0
1const stopAt→ 3 = 3; //@stopAt=2, 52let seen→ 0 = 0;3for (let i = 1; i <= 5; i += 1) {seen ← 1
pass 1 of 31const stopAt = 3; //@stopAt=2, 52let seen = 0;3for (let i1 = 1; i <= 5; i += 1) {4 seen = i1;5 if (i === stopAt) {values this step1seenAll 3 passes — pass 1 is the card above pass istopAtseen1 1 — 1 2 2 — 2 3 3 3 3 if (i === stopAt)
3for (let i = 1; i <= 5; i += 1) {4 seen = i;5 if (i3 === stopAt3) {6 break;7 }console.log("stopAt=" + stopAt);
7 }8}910console.log("stopAt=" + stopAt3);11console.log("seen=" + seen3);outputstopAt=3 seen=3
stopAt ← 2, seen ← 0
1const stopAt→ 2 = 2;2let seen→ 0 = 0;3for (let i = 1; i <= 5; i += 1) {seen ← 1
pass 1 of 21const stopAt = 2;2let seen = 0;3for (let i1 = 1; i <= 5; i += 1) {4 seen = i1;5 if (i === stopAt) {values this step1seenseen ← 2
pass 2 of 21const stopAt = 2;2let seen = 0;3for (let i2 = 1; i <= 5; i += 1) {4 seen = i2;5 if (i === stopAt) {values this step2seenif (i === stopAt)
3for (let i = 1; i <= 5; i += 1) {4 seen = i;5 if (i2 === stopAt2) {6 break;7 }console.log("stopAt=" + stopAt);
7 }8}910console.log("stopAt=" + stopAt2);11console.log("seen=" + seen2);outputstopAt=2 seen=2
stopAt ← 5, seen ← 0
1const stopAt→ 5 = 5;2let seen→ 0 = 0;3for (let i = 1; i <= 5; i += 1) {seen ← 1
pass 1 of 51const stopAt = 5;2let seen = 0;3for (let i1 = 1; i <= 5; i += 1) {4 seen = i1;5 if (i === stopAt) {values this step1seenAll 5 passes — pass 1 is the card above pass istopAtseen1 1 — 1 2 2 — 2 3 3 — 3 4 4 — 4 5 5 5 5 if (i === stopAt)
3for (let i = 1; i <= 5; i += 1) {4 seen = i;5 if (i5 === stopAt5) {6 break;7 }console.log("stopAt=" + stopAt);
7 }8}910console.log("stopAt=" + stopAt5);11console.log("seen=" + seen5);outputstopAt=5 seen=5