A utilização de legendas em JavaScript é má prática?

acabei de saber sobre a utilização do rótulo s em JavaScript, tais como:

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

doThis: //Label
doIt();
Não ouvi falar disto até agora e não consigo encontrar muita informação online sobre isso e começo a pensar que há uma razão para isso.

parece-me que isto é semelhante a uma declaração GOTO em outras línguas e seria considerado uma má prática. Estaria certo em assumir isto?

Author: kguest, 2011-02-05

4 answers

São identificadores de disjuntores. Eles são úteis se você tiver aninhado loops (loops dentro de loops) e usando esses identificadores, você pode especificar condicionalmente quando e de qual loop para sair.
 21
Author: Sarfraz, 2011-02-05 12:15:11

As legendas em JavaScript são usadas principalmente com quebra, ou continuar em laços aninhados para ser capaz de quebrar o exterior, ou continuar o laço exterior a partir do código dentro do laço interior:

    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
    }

Se você usou continuar sem o rótulo 'exterior', iria para a próxima iteração do laço interior. É por isso que há uma necessidade de rótulos em Javascript.

 42
Author: tdobek, 2011-02-05 12:18:30

Evite usar etiquetas

As etiquetas não são muito usadas no JavaScript, uma vez que fazem programas mais difíceis de ler e entender. Tanto quanto possível, evite utilizar etiquetas e, dependendo dos casos, preferir funções de chamada ou a cometer um erro.

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

 10
Author: Gal Margalit, 2015-01-17 18:56:04

As pausas marcadas podem sair de qualquer bloco de código e não apenas loops

<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";
}

Resultado:

Teste 1 aprovado

Teste 2 aprovado

Teste 3 aprovado

 2
Author: Pall Arpad, 2017-11-06 12:20:13