JavaScript break 和 continue 语句

张开发
2026/4/15 21:37:23 15 分钟阅读

分享文章

JavaScript break 和 continue 语句
JavaScript break 和 continue 语句详解在 JavaScript 中break和continue是用于控制循环流程的关键字。它们通常与for、while、do...while循环以及switch语句配合使用。1. break 语句作用立即终止当前所在的循环或switch语句跳出代码块继续执行循环/switch 之后的代码。基本语法break;使用场景A. 在循环中提前退出当满足某个条件时不再需要继续循环直接跳出。letnumbers[1,3,5,8,9,12];letsum0;letindex0;while(indexnumbers.length){if(numbers[index]10){console.log(遇到大于 10 的数${numbers[index]}停止累加);break;// 立即跳出循环}sumnumbers[index];index;}console.log(总和${sum});// 输出总和17 (1358)B. 在 switch 语句中防止代码“穿透”到下一个 case。letday3;letdayName;switch(day){case1:dayName星期一;break;case2:dayName星期二;break;case3:dayName星期三;break;default:dayName未知;}console.log(dayName);// 输出星期三注意如果 switch 中忘记写break程序会继续执行下一个 case 的代码直到遇到 break 或 switch 结束。C. 带标签的 break (Labelled Break)用于跳出嵌套循环中的外层循环。outerLoop:for(leti1;i3;i){for(letj1;j3;j){if(i2j2){console.log(i${i}, j${j}跳出所有循环);breakouterLoop;// 跳出标记为 outerLoop 的外层循环}console.log(i${i}, j${j});}}console.log(循环结束);输出i1, j1 i1, j2 i1, j3 i2, j1 i2, j2跳出所有循环 循环结束2. continue 语句作用跳过当前循环的剩余代码直接进入下一次循环的迭代更新循环变量并检查条件。它不会终止整个循环。基本语法continue;使用场景A. 跳过特定条件的迭代当遇到某些不需要处理的元素时跳过本次循环。letnumbers[1,2,3,4,5,6,7,8,9,10];console.log(奇数);for(leti0;inumbers.length;i){if(numbers[i]%20){continue;// 如果是偶数跳过本次循环不执行下面的 console.log}console.log(numbers[i]);}// 输出1, 3, 5, 7, 9B. 在 while 循环中的使用letcount0;while(count10){count;if(count5){console.log(跳过 5);continue;// 跳过 count5 时的后续代码}console.log(当前计数${count});}输出当前计数1 当前计数2 当前计数3 当前计数4 跳过 5 当前计数6 ... 当前计数10C. 带标签的 continue (Labelled Continue)用于跳过嵌套循环中当前外层循环的剩余部分直接进入外层循环的下一次迭代。outerLoop:for(leti1;i3;i){for(letj1;j3;j){if(i2j2){console.log(i${i}, j${j}跳过内层剩余进入外层下一次);continueouterLoop;// 跳过内层剩余直接 i进入下一次外层循环}console.log(i${i}, j${j});}}输出i1, j1 i1, j2 i1, j3 i2, j1 i2, j2跳过内层剩余进入外层下一次 i3, j1 i3, j2 i3, j3注意当i2时j2触发 continue跳过了j3直接进入i3。3. break 与 continue 对比总结特性breakcontinue作用范围终止整个循环或 switch仅跳过当前这一次迭代后续执行执行循环/switch 之后的代码执行下一次循环的条件判断/更新循环状态循环彻底结束循环继续只是少执行一次适用场景找到目标、出错、满足终止条件过滤数据、跳过无效项标签使用可跳出多层嵌套循环可跳过多层嵌套循环的当前外层迭代4. 常见陷阱与最佳实践陷阱 1在 while 循环中忘记更新变量使用continue时如果更新循环变量的代码在continue之后会导致无限循环。// ❌ 错误示例无限循环leti0;while(i5){if(i2){continue;// 跳过了 ii 永远是 2}console.log(i);i;// 这行代码在 i2 时永远不会执行}// ✅ 正确示例确保更新变量在 continue 之前或放在循环末尾letj0;while(j5){j;// 先更新if(j3){continue;}console.log(j);}陷阱 2过度使用导致代码难以阅读如果逻辑过于复杂过多的break和continue会让代码像“意大利面条”一样难以维护。建议如果逻辑太复杂考虑将循环体提取为独立的函数或者重构条件逻辑。最佳实践明确意图使用break和continue时最好添加注释说明原因。避免深层嵌套如果嵌套太深考虑使用函数提前返回return来替代break。优先使用 for…of / forEach对于数组遍历现代 JS 更推荐使用for...of配合return(在箭头函数中) 或逻辑判断代码更简洁。// 传统方式for(leti0;iarr.length;i){if(arr[i]0)continue;// 处理}// 现代方式 (更清晰)for(constitemofarr){if(item0)continue;// 处理}5. 综合实战示例示例数据清洗与查找假设我们有一个包含用户数据的数组需要跳过无效数据null 或 age 18。找到第一个年龄大于 30 的用户并停止搜索。constusers[{name:Alice,age:17},{name:Bob,age:25},null,// 无效数据{name:Charlie,age:32},{name:David,age:40},{name:Eve,age:29}];letfoundUsernull;for(leti0;iusers.length;i){constuserusers[i];// 跳过无效数据if(!user||user.age18){console.log(跳过无效数据${user?user.name:null});continue;}// 查找第一个年龄大于 30 的用户if(user.age30){foundUseruser;console.log(找到目标用户${user.name}(年龄${user.age}));break;// 找到后停止搜索}}if(foundUser){console.log(最终结果${foundUser.name});}else{console.log(未找到符合条件的用户);}输出跳过无效数据Alice 跳过无效数据null 找到目标用户Charlie (年龄32) 最终结果Charlie总结break是“停止键”用于彻底结束循环或 switch。continue是“跳过键”用于跳过当前轮次进入下一轮。两者都能配合标签 (Label)控制嵌套循环。使用时务必注意循环变量的更新防止死循环。保持代码简洁避免滥用。

更多文章