循环-在JavaScript中使用标签是不好的做法吗?

我刚刚发现有关在JavaScript中使用label的信息,例如:

for (var i in team) {
    if(i === "something") {
        break doThis: //Goto the label
    } else {
        doThat();
    }
}

doThis: //Label
doIt();

直到现在我还没有听说过这个消息,而且我在网上也找不到太多的信息,而且我开始认为这样做是有原因的。

在我看来,这类似于其他语言中的300602335674027331152语句,被认为是不良做法。 我会假设这个正确吗?

Ryan asked 2020-08-11T01:51:08Z
4个解决方案
47 votes

JavaScript中的标签主要与break一起使用,或在嵌套循环中继续使用,以便能够中断外部循环,或从内部循环内部的代码继续进行外部循环:

    outer:
    for (let i = 0; i < 10; i++)
    { 
       let k = 5;
       for (let j = 0; j < 10; j++) // inner loop
          if (j > 5) 
               break; // inner 
          else
               continue outer;  // it will go to next iteration of outer loop
    }

如果您使用了没有“外部”标签的continue,它将进入内部循环的下一次迭代。 这就是为什么在Javascript中需要标签的原因。

tdobek answered 2020-08-11T01:51:39Z
25 votes

这些是回路断路器标识符。 如果您有嵌套循环(循环内的循环)并使用这些标识符,它们很有用,您可以有条件地指定从哪个时间和哪个循环中断。

Sarfraz answered 2020-08-11T01:51:14Z
9 votes

避免使用标签

标签在JavaScript中不是很常用,因为它们可以 程序难以阅读和理解。 尽可能避免 使用标签,并视情况选择使用调用函数或 引发错误。

[HTTPS://developer.Mozilla.org/恩-US/docs/Web/JavaScript/reference/statements/label]

Gal Margalit answered 2020-08-11T01:52:08Z
2 votes

标记的中断可以突破任何代码块而不仅仅是循环

<p id="test1"></p>
<p id="test2"></p>
<p id="test3"></p>
<p id="test4"></p>
<p id="test5"></p>

test: {                            
    document.getElementById('test1').innerHTML = "test 1 passed";
    document.getElementById('test2').innerHTML = "test 2 passed";
    document.getElementById('test3').innerHTML = "test 3 passed";
    break test;
    document.getElementById('test4').innerHTML = "test 4 passed";
    document.getElementById('test5').innerHTML = "test 5 passed";
}

结果:

测试1通过

测试2通过

测试3通过

Pall Arpad answered 2020-08-11T01:52:45Z
translate from https://stackoverflow.com:/questions/4906762/is-using-labels-in-javascript-bad-practice