代码之家  ›  专栏  ›  技术社区  ›  Lukas

标识符后跟冒号[重复]

  •  0
  • Lukas  · 技术社区  · 7 年前

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

    在我看来,这就像 GOTO 在其他语言和语言的陈述将被视为不好的做法。我这样假设对吗?

    0 回复  |  直到 11 年前
        1
  •  29
  •   Sarfraz    15 年前

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

        2
  •  52
  •   tdobek    15 年前

    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而不使用“outer”标签,它将进入下一个内部循环的迭代。这就是为什么在Javascript中需要标签。

        3
  •  10
  •   Gal Margalit    5 年前

    2020编辑, 根据MDN:

    可以用来代替循环跳跃。

    我2015年的答案:

    避免使用标签

    标签在JavaScript中并不常用,因为它们使 更难阅读和理解的程序。尽可能避免 使用标签,根据具体情况,更喜欢调用函数或 抛出错误。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

        4
  •  5
  •   Pall Arpad    8 年前

    标记的中断可以中断 任何

    <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通过