Skip to content

JS Label ​

2023-12-07 22:36:07

当我们写了一个双循环的时候 例如这样 👇🏻

ts
for (let i = 0; i < 10; i++) {
  console.log(`外层循环: ${i}`)

  for (let j = 0; j < 5; j++) {
    console.log(`内层循环: ${j}`)

    if (i + j === 10) {
      console.log('退出循环')
    }
  }
}

我们希望在某个条件下可以退出全部的循环 而不只是内层的循环

我们可能会想到在内部来定义一个 flag 当条件满足时为 flag 设置为 true 然后来退出

ts
for (let i = 0; i < 10; i++) {
  let flag = false
  console.log(`外层循环: ${i}`)

  for (let j = 0; j < 5; j++) {
    console.log(`内层循环: ${j}`)

    if (i + j === 10) {
      console.log('退出循环')
      flag = true
      break
    }
  }

  if (flag) {
    break
  }
}

我们这样就满足了需求,但是有一个更简便的方法,那就是通过 JS label 来为循环打上标记

ts
outer: for (let i = 0; i < 10; i++) {
  console.log(`外层循环: ${i}`)

  for (let j = 0; j < 5; j++) {
    console.log(`内层循环: ${j}`)

    if (i + j === 10) {
      console.log('退出循环')
      break outer
    }
  }
}

我们这里为外层的循环打上一个标记 outer,当我们的条件满足时 在break后面跟上前面的标记 就会直接退出标记的循环

详情 => MDN label statements

Released under the MIT License.