【问题标题】:Why JS lables does'nt work when not used with loops为什么 DOES 标签在不与循环一起使用时不起作用
【发布时间】:2019-04-15 06:11:11
【问题描述】:

我在这里写了一个小的 JS 代码。哪个运行没有任何错误

repeat:
  while(true){
    console.log('Start');
    break repeat;
    console.log('End');
  }

但是当我不使用 while 语句时,程序会抛出错误 Undefined label repeat

repeat:
    console.log('Start');
    break repeat;
    console.log('End');

为什么程序会抛出该错误?标签是否仅用于循环?

【问题讨论】:

    标签: javascript html ecmascript-6 ecmascript-5


    【解决方案1】:

    基本上,它适用于代码blocks。虽然您没有任何要中断的块,但代码会引发错误。

    repeat: {
        console.log('Start');
        break repeat;
        console.log('End');
    }

    【讨论】:

      【解决方案2】:

      另外,“这样的构造基本上是拖拽中的goto。”我希望看到用continue 语句编写的逻辑,如下所示:

      while (true) {
        console.log('start');
        if (x == y) continue;
        console.log('foo');
        if (q != z) continue;
        ...
      }
      

      我的意思是“它仍然是一个while 循环,就像我说的那样”,只是它并不总是到达终点。当它没有到达终点时,它总是回到顶部。

      break 语句在 while (true) 的情况下最常见,事实上,任何阅读您的代码的人都希望使用该语句。逻辑一直运行直到满足某个条件,此时它“跳出循环”并转到它后面的语句。

      当你“break 喜欢goto”时,你的逻辑变得更难解开和理解。这是一个非常重要的考虑因素。 “写得简单明了,按照人们通常期望的方式。不要投掷曲线球。”

      【讨论】:

      • 我刚刚问为什么程序会抛出那个错误?标签是否仅用于循环?
      猜你喜欢
      • 1970-01-01
      • 2015-07-24
      • 2019-05-19
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2021-07-10
      相关资源
      最近更新 更多