break and continue
In short: both change a loop's normal flow, but differently.
break exits the loop immediately — no more laps run, ever. continue
skips only the rest of the current lap and jumps straight to the next
one — the loop keeps going. Reach for break when you've found what you
needed and there's no point checking further; reach for continue when
this particular item doesn't apply but the rest still might.

Skipping songs marked to skip
continue lets a loop pass over items that don't apply, without stopping:
When song is "skip", continue ends that lap right there — the
console.log below it never runs for that item — and the loop moves on to
"Paper Moon" as normal. Every other song still plays.
Stopping a queue at a marker
break is for "we're done here, for good":
The loop never even looks at "Paper Moon" — once break runs, control
jumps straight past the entire loop to "after loop". Nothing after the
break in that lap, and no later lap, ever executes.
Choosing between them
The test: does the rest of the loop still matter after this item, or not?
Skipping an explicit-content song while playing the rest of the playlist
is continue. Stopping playback entirely because the user hit pause is
break. Mixing them up is a real bug — a break where you meant
continue silently drops every item after the trigger, not just the one
you meant to skip.
Quick practice
for (const n of [1, 2, 3, 4]) { if (n === 2) continue; console.log(n); } — what prints?
for (const n of [1, 2, 3, 4]) { if (n === 2) break; console.log(n); } — what prints?
A loop needs to skip blank entries but keep checking the rest of the list. Which keyword?
