Break 语句未退出 JavaScript 内的所有嵌套循环
Break statement not exiting all nested loops within JavaScript
我了解到 break 语句会终止所有嵌套循环。
我已经编写了以下代码,但它没有按预期工作。
<script>
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 3) {
break;
}
document.write(i + '*' + j + '<br>');
}
}
</script>
实际输出:
0*0
0*1
0*2
0*3
0*4
1*0
1*1
1*2
1*3
1*4
2*0
2*1
2*2
2*3
2*4
4*0
4*1
4*2
4*3
4*4
据我了解,输出不应包含 4*0...4*4
,因为当 i == 3
时,break
应终止所有嵌套循环。
预期输出:
0*0
0*1
0*2
0*3
0*4
1*0
1*1
1*2
1*3
1*4
2*0
2*1
2*2
2*3
2*4
不是,break只是打断当前循环,不是全部。您也可以使用布尔变量来跳出封闭循环。
示例:
<script>
let break = false
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 3) {
break = true;
break;
}
document.write(i + '*' + j + '<br>');
}
if(break) break
}
</script>
您必须指定要打破的循环。
loop1: for (i = 0; i < 5; i++) {
loop2: for (j = 0; j < 5; j++) {
if (i == 3) {
break loop1;
}
document.write(i + '*' + j + '<br>');
}
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/break
默认情况下,唯一的最内层循环被转义,但您可以通过自封闭函数和 return 语句实现您期望的行为。
(function(){
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 3) {
return;
}
document.write(i + '*' + j + '<br>');
}
}
})()
你为什么不在第一个循环中放置一个中断?
<script>
for (i = 0; i < 5; i++) {
if (i == 3) break;
for (j = 0; j < 5; j++) {
document.write(i + '*' + j + '<br>');
}
}
</script>
我了解到 break 语句会终止所有嵌套循环。 我已经编写了以下代码,但它没有按预期工作。
<script>
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 3) {
break;
}
document.write(i + '*' + j + '<br>');
}
}
</script>
实际输出:
0*0
0*1
0*2
0*3
0*4
1*0
1*1
1*2
1*3
1*4
2*0
2*1
2*2
2*3
2*4
4*0
4*1
4*2
4*3
4*4
据我了解,输出不应包含 4*0...4*4
,因为当 i == 3
时,break
应终止所有嵌套循环。
预期输出:
0*0
0*1
0*2
0*3
0*4
1*0
1*1
1*2
1*3
1*4
2*0
2*1
2*2
2*3
2*4
不是,break只是打断当前循环,不是全部。您也可以使用布尔变量来跳出封闭循环。
示例:
<script>
let break = false
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 3) {
break = true;
break;
}
document.write(i + '*' + j + '<br>');
}
if(break) break
}
</script>
您必须指定要打破的循环。
loop1: for (i = 0; i < 5; i++) {
loop2: for (j = 0; j < 5; j++) {
if (i == 3) {
break loop1;
}
document.write(i + '*' + j + '<br>');
}
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/break
默认情况下,唯一的最内层循环被转义,但您可以通过自封闭函数和 return 语句实现您期望的行为。
(function(){
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 3) {
return;
}
document.write(i + '*' + j + '<br>');
}
}
})()
你为什么不在第一个循环中放置一个中断?
<script>
for (i = 0; i < 5; i++) {
if (i == 3) break;
for (j = 0; j < 5; j++) {
document.write(i + '*' + j + '<br>');
}
}
</script>