sirve - que es javascript pdf
¿Usar etiquetas en JavaScript es una mala práctica? (4)
Me acabo de enterar sobre el uso de etiquetas en JavaScript, como por ejemplo:
for (var i in team) {
if(i === "something") {
break doThis: //Goto the label
} else {
doThat();
}
}
doThis: //Label
doIt();
No he oído hablar de esto hasta ahora y no puedo encontrar mucha información en línea al respecto y estoy empezando a pensar que hay una razón para eso.
Me parece que esto es similar a una declaración GOTO
en otros idiomas y se consideraría una mala práctica. ¿Tendría razón al asumir esto?
Evita usar etiquetas
Las etiquetas no se usan con mucha frecuencia en JavaScript, ya que hacen que los programas sean más difíciles de leer y comprender. En la medida de lo posible, evite usar etiquetas y, según los casos, prefiera llamar funciones o lanzar un error.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Esos son identificadores de interruptores de lazo. Son útiles si tiene bucles anidados (bucles dentro de bucles) y si utiliza estos identificadores, puede especificar de manera condicional cuándo y de qué bucle partir.
Las etiquetas en JavaScript se usan principalmente con break, o continúan en bucles anidados para poder romper el exterior, o continúan el bucle externo desde el código dentro del bucle interno:
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
}
Si utilizó continue sin la etiqueta ''outer'', iría a la siguiente iteración del ciclo interno. Es por eso que hay una necesidad de etiquetas en Javascript.
roturas etiquetadas pueden romperse de cualquier bloque de código, no solo de bucles
<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:
prueba 1 aprobada
prueba 2 aprobada
prueba 3 aprobada