
本教程详解如何编写一个循环函数:每次将输入数字加2,最多执行9次,若某次累加结果等于当前迭代序号(从1开始),则立即返回中断提示字符串;否则返回包含所有累加值的数组。
本教程详解如何编写一个循环函数:每次将输入数字加2,最多执行9次,若某次累加结果等于当前迭代序号(从1开始),则立即返回中断提示字符串;否则返回包含所有累加值的数组。
要正确实现该功能,需精准理解题干两个核心要求:
-
循环控制逻辑:需执行最多 9 次(非 10 次)——因为示例中
breakStatement(50)的期望输出含 9 个元素[52, 54, ..., 68],说明循环应迭代i = 1到i = 9(共 9 轮); -
中断触发条件:不是“累加值等于循环索引
i”,而是在本次更新num后,立即判断num === i是否成立;一旦成立,必须立即返回字符串"interrupted execution"(注意大小写与空格需完全匹配预期),而非仅break循环后继续执行。
原代码存在三处关键问题:
- 循环范围为
i = 0到i (共 10 次),导致结果数组长度为 10,与预期不符; - 中断判断
if (num === i)发生在push之后,但未配合return,仅break会导致函数继续执行并返回完整数组; -
i从 0 开始,而题目隐含的“迭代次数”是自然计数(第 1 次、第 2 次……),因此i应从 1 开始。
✅ 正确实现如下:
function breakStatement(num) {
const nuevosValores = [];
for (let i = 1; i <= 9; i++) { // 执行恰好 9 次:i = 1, 2, ..., 9
num += 2; // 累加 2
if (num === i) {
return 'interrupted execution'; // 立即终止函数,返回字符串
}
nuevosValores.push(num); // 仅当未中断时才存入
}
return nuevosValores; // 循环正常结束,返回数组
}验证示例:
-
breakStatement(-4):- i=1 → num = -2 → -2 ≠ 1 → push(-2)
- i=2 → num = 0 → 0 ≠ 2 → push(0)
- i=3 → num = 2 → 2 ≠ 3 → push(2)
- i=4 → num = 4 → 4 === 4 → 返回
"interrupted execution"✅
breakStatement(50):
每轮 num 依次变为 52, 54, ..., 68(共 9 个值),全程num(最小为 52)远大于i(最大为 9),无中断,最终返回[52, 54, 56, 58, 60, 62, 64, 66, 68]✅
⚠️ 注意事项:
- 返回字符串必须严格为
'interrupted execution'(小写、无标点、单空格),不可写作"Execution was interrupted"或首字母大写; - 不可在中断时
console.log(),题目要求“返回”该字符串; - 数组长度恒为 0–8(取决于中断时机),绝不会出现 10 个元素;
- 修改
i的起始值(1)和上限(9)是满足“最多 9 次”的最清晰方式,优于用i 配 <code>i++后判断。
掌握此模式,即可稳健处理“带提前退出条件的确定次数循环”类问题。

















