Break语句不会退出JavaScript中的所有嵌套循环

时间:2020-03-31 19:48:27

标签: javascript node.js break

我知道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

4 个答案:

答案 0 :(得分:1)

您必须指定要从哪个循环中断。

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

答案 1 :(得分:0)

不,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>

答案 2 :(得分:0)

默认情况下,唯一的最里面的循环被转义,但是您可以通过自包含函数和return语句实现预期的行为。

(function(){
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            if (i == 3) {
                return;
            }
            document.write(i + '*' + j + '<br>');
        }
    }
})()

答案 3 :(得分:0)

为什么不在第一个循环中放个休假?

<script>
  for (i = 0; i < 5; i++) {
    if (i == 3) break;
    for (j = 0; j < 5; j++) {
      document.write(i + '*' + j + '<br>');
    }
  }
</script>