带中断逻辑的循环递增JavaScript函数实现故障求助
问题分析与修复
需求回顾
循环迭代最多10次,每次将接收的数字加2,将每个新值存入数组并返回;若某一时刻数值与迭代次数相等,需中断执行并返回字符串"Execution was interrupted"。
现有代码问题
你的代码存在两个核心问题:
- 触发中断条件时仅用
break跳出循环,但后续依然返回数组,没有按照需求返回中断字符串。 - 你提到传入50时返回
undefined,大概率是修改代码时误删了return语句(原代码中存在return nuevosValores,正常不会返回undefined)。
修复后的代码
function breakStatement(num) { const nuevosValores = []; for (let i = 0; i < 10; i++) { num += 2; nuevosValores.push(num); // 满足中断条件时直接返回指定字符串,无需额外break if (num === i) { return "Execution was interrupted"; } } // 未触发中断则返回结果数组 return nuevosValores; }
测试验证
- 传入
-4:第三次循环时num变为2,此时i=2,满足num === i,直接返回"Execution was interrupted",符合预期。 - 传入
50:循环执行10次,依次存入52、54、56、58、60、62、64、66、68、70,最终返回该数组。若你预期是9个元素,可能是对“迭代次数”的定义理解偏差——若迭代次数从1开始计数,可将循环改为for (let i = 1; i <= 10; i++),此时会得到9个元素(直到i=9时存入68,第10次存入70)。
内容的提问来源于stack exchange,提问作者Santiago Franco
相关产品推荐
相关产品推荐

