退出多个循环(继续和中断之间的区别)
时间:2022-12-27阅读:57来源:柠檬博客作者:柠檬博客
介绍
清理了嵌套 for 语句中 continue 和 break 之间的行为差异。它是用 JavaScript 编写的,但也可以用 Java 编写。
目录 1. 样品例如,一个简单数组的多重循环:
const loopA = [1, 2]; const loopB = [1, 2, 3]; for (const a of loopA) { for (const b of loopB) { console.log(`A${a}-B${b}`); } } // 出力結果↓↓ // A1-B1 // A1-B2 // A1-B3 // A2-B1 // A2-B2 // A2-B32.继续
continue 跳过循环的其余部分并继续下一个循环。本例中,当内循环(loopB)为2时,不输出。
const loopA = [1, 2]; const loopB = [1, 2, 3]; for (const a of loopA) { for (const b of loopB) { if (b === 2) { continue; } console.log(`A${a}-B${b}`); } } // 出力結果↓↓ // A1-B1 // A1-B3 // A2-B1 // A2-B33.休息
break 终止循环本身。如果你在上面continue的地方使用break,内循环(loopB)会在那里结束,2之后的输出不会输出,会移动到外循环的下一个循环( loopA)..
const loopA = [1, 2]; const loopB = [1, 2, 3]; for (const a of loopA) { for (const b of loopB) { if (b === 2) { break; } console.log(`A${a}-B${b}`); } } // 出力結果↓↓ // A1-B1 // A2-B14. 更深的循环
通常说,首先不应该使用多个循环,因为它们会降低可读性。这一次,为了确认 continue 和 break 的区别,我敢于潜得更深。
const loopA = [1, 2]; const loopB = [1, 2]; const loopC = [1, 2, 3]; for (const a of loopA) { for (const b of loopB) { for (const c of loopC) { console.log(`A${a}-B${b}-C${c}`); } } } // 出力結果↓↓ // A1-B1-C1 // A1-B1-C2 // A1-B1-C3 // A1-B2-C1 // A1-B2-C2 // A1-B2-C3 // A2-B1-C1 // A2-B1-C2 // A2-B1-C3 // A2-B2-C1 // A2-B2-C2 // A2-B2-C3
我们将以此作为样本来检查行为差异。
5. 继续标签您可以随时使用标签退出循环。这次是LABEL,但您可以为标签指定任何字符串。
const loopA = [1, 2]; const loopB = [1, 2]; const loopC = [1, 2, 3]; LABEL:for (const a of loopA) { for (const b of loopB) { for (const c of loopC) { console.log(`A${a}-B${b}-C${c}`); if (b === 2 && c === 1) { continue LABEL; } } } } // 出力結果↓↓ // A1-B1-C1 // A1-B1-C2 // A1-B1-C3 // A1-B2-C1 // A2-B1-C1 // A2-B1-C2 // A2-B1-C3 // A2-B2-C1
在这个例子中,第二个循环(loopB)是2,第三个循环(loopC)是1,跳过第一个循环的其余部分(loopA)。继续下一个循环.
6.打破标签接下来,让我们在与上述 continue 相同的位置和相同的条件下使用 break。
const loopA = [1, 2]; const loopB = [1, 2]; const loopC = [1, 2, 3]; LABEL:for (const a of loopA) { for (const b of loopB) { for (const c of loopC) { console.log(`A${a}-B${b}-C${c}`); if (b === 2 && c === 1) { break LABEL; } } } } // 出力結果↓↓ // A1-B1-C1 // A1-B1-C2 // A1-B1-C3 // A1-B2-C1
通过满足条件,标记loopA被破坏,不执行后续处理。
七、总结即使是这样一个简单的例子,可读性也会下降,所以我认为让循环本身保持浅层很重要。但是,我认为了解如何使用标签将扩大如何处理循环的范围。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308622949.html
57人参与,
0条评论
登录后显示评论回复