东方不亮西方亮

记录分享

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

说明

一次从多层嵌套的循环中跳出来。

例如


for (let i = 0; i < 3; i++) {

  for (let j = 0; j < 3; j++) {

    let input = prompt(`Value at coords (${i},${j})`, '');

    // 如果我想从这里退出并直接执行 alert('Done!')
  }
}

alert('Done!');

如果在input之后添加break,只会打破内部循环。

使用

可以使用标签来实现

标签的基本使用:

labelName: for (...) {
  ...
}

修改上述示例:

outer: for (let i = 0; i < 3; i++) {

  for (let j = 0; j < 3; j++) {

    let input = prompt(`Value at coords (${i},${j})`, '');

    // 如果是空字符串或被取消,则中断并跳出这两个循环。
    if (!input) break outer; // (*)

    // 用得到的值做些事……
  }
}
alert('Done!');

上述代码中,break outer 向上寻找名为outer的标签跳出当前循环

标签也可以单独成行

outer:
for (let i = 0; i < 3; i++) { ... }

continue 指令也可以与标签一起使用。在这种情况下,执行跳转到标记循环的下一次迭代。

注意

标签并不允许“跳到”所有位置

标签不允许我们跳到代码的任意位置。

例如,这样做是不可能的:

break label;  // 无法跳转到这个标签

label: for (...)

只有在循环内部才能调用 break/continue,并且标签必须位于指令上方的某个位置。

posted on 2021-07-29 17:28  东方不亮西方亮  阅读(422)  评论(0)    收藏  举报