写了几十年js,头一次知道js居然有行标签

358 阅读1分钟

起因是看svelte代码,突然想到那个$:它不会是行标号吧?难道js支持行标号?

一搜还真有。

大致有这么几种用法

1 break 语句:  跳出指定的循环

outerloop:
for (var i = 0; i < 3; i++) {
  innerloop:
  for (var j = 0; j < 3; j++) {
    if (i === 1 && j === 1) {
      break outerloop; // 跳出外部循环
    }
    console.log('i=' + i + ', j=' + j);
  }
}

嗯,确实比外层循环写个let变量判断简洁不少

  1. continue 语句:  标签可以与 continue 语句一起使用,用于跳过当前循环的剩余部分并继续下一次迭代。在多层嵌套循环中,可以通过标签和 continue 语句控制跳转到指定的位置。

outerloop:
for (var i = 0; i < 3; i++) {
  innerloop:
  for (var j = 0; j < 3; j++) {
    if (j === 1) {
      continue outerloop; // 跳过当前外部循环的剩余部分
    }
    console.log('i=' + i + ', j=' + j);
  }
}
  1. break 语句:  在除了循环之外的代码块中,标签还可以与 break 语句一起使用,用于跳出带有指定标签的代码块。这样可以在多层嵌套的代码结构中更精确地控制流程。
mylabel:
{
  console.log('Hello');
  break mylabel; // 跳出带有指定标签的代码块
  console.log('World'); // 不会被执行
}

没有goto语句,应该算是庆幸。

总的来说,属于没什么大用的语法,难怪写了几十年也没发现这个😂