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?
4 answers
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.
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
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