break 与 continue
循环可以每一轮都跑到结束——除非你来转向。有时答案已经有了,你想停住。有时某一项没用,你想跳过它再继续。break 立刻离开循环。continue 跳到下一轮。还是同一类循环;两个小词改变飞行路径。
break 做什么?
break 立刻结束最近一层循环。后面的轮次不再执行。脚本里循环之后的代码照常运行。可以想成:「做完了——出去。」常用于找到第一个匹配后不必再扫剩余项。
break 对比 continue
📊 中途给循环转向
| 关键字 | 作用 | 日常场景 |
|---|---|---|
break |
立刻离开循环 | 已找到第一个匹配;不必再等 |
continue |
跳过本轮剩余,开始下一轮 | 忽略一项坏数据;继续扫描 |
| 都不用 | 每一轮完整执行循环体 | 每一项都要同样处理 |
| 循环之后 | 循环下方的代码仍会执行 | break 只离开循环,不是整个脚本 |
后面轮次没有用时选 break。某一轮该安静但扫描还要继续时选 continue。别对调——这种 bug 看起来「几乎对」,很难发现。
const nums = [2, 4, 7, 8];
let found = null;
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 7) {
found = nums[i];
break;
}
}
console.log(found);
找到匹配就停
循环先看 2,再 4,再 7。到 7 时存下值并 break。8 不会执行。found 是 7。没有 break,知道答案后循环还会继续走。
for (let i = 1; i <= 5; i++) {
if (i % 2 === 0) {
continue;
}
console.log(i);
}
跳过一轮再继续
当 i 是偶数时,continue 跳到下一个 i。那些轮次里的 console.log 被跳过。你会看到 1、3、5。循环没有停——只是略过了偶数。
let n = 1;
while (n < 20) {
if (n === 5) {
break;
}
console.log(n);
n = n + 1;
}
提前离开 while
while 本会在 n < 20 时一直走。到 n === 5 时 break 退出。打印了 1–4。适合「走到停止规则再离开」——不必跑完所有可能轮次。
const colors = ["red", "skip", "blue"];
for (const c of colors) {
if (c === "skip") {
continue;
}
console.log(c);
}
在 for...of 里跳过某些值
for...of 仍按值遍历。continue 忽略 "skip",再打印 red,然后 blue。转向思路在 for、while、for...of 里一样——只作用于最近一层循环。
const parts = ["A", "x", "B", "x", "C"];
let msg = "";
for (const p of parts) {
if (p === "x") {
continue;
}
msg = msg + p;
}
console.log(msg);
拼接时过滤
每个 "x" 被跳过;字母追加上去。结果是 ABC。还是前面循环课里的拼接习惯——continue 是遍历里的过滤门。
在页面上展示 break 与 continue
遍历短列表,用 continue 跳过一个标签,遇到标记后用 break 提前停,把结果写到页面。
<!DOCTYPE html>
<html>
<head>
<title>break / continue — page</title>
</head>
<body>
<p id="out">…</p>
<script>
const items = ["a", "skip", "b", "stop", "c"];
let line = "";
for (const item of items) {
if (item === "skip") {
continue;
}
if (item === "stop") {
break;
}
line = line + item + " ";
}
let box = document.getElementById("out");
box.textContent = "kept=" + line.trim();
</script>
</body>
</html>
页面显示 kept=a b。"skip" 被忽略;"stop" 在 "c" 之前结束了循环。改数组、刷新,读新行。下一课开始函数——用名字调用的可复用代码块。
自己试试
- 在
[3, 9, 1]的for里,值是9时break并保存。 - 用
continue跳过偶数,只打印1到6的奇数。 - 在
while里计数器到3时用break停下。 - 对
["ok", "no", "ok"]用for...of,对"no"使用continue。 - 把
["1", "-", "2"]跳过"-"拼成12。 - 在 HTML 演示里只改数组,刷新并读
kept=。
常见错误
- 以为
continue会退出整个循环(那是break) - 在同一轮里把更多工作写在
break后面——永远不会执行 - 在
while里未先更新计数器就continue——有死循环风险 - 其实只想跳过一项却用了
break - 以为
break会离开整个脚本——它只离开最近一层循环
小结
break—— 立刻离开循环;后面轮次不跑continue—— 跳过本轮剩余;开始下一轮- 适用于
for、while和for...of - 搜索常用
break;过滤常用continue break之后循环下方的代码仍会执行- 下一课:函数——给一段工作命名并调用它
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部