Je viens de découvrir l'utilisation d'étiquettes en JavaScript, telles que:
for (var i in team) {
if(i === "something") {
break doThis: //Goto the label
} else {
doThat();
}
}
doThis: //Label
doIt();
Je n'en ai pas entendu parler jusqu'à présent et je ne trouve pas beaucoup d'informations en ligne à ce sujet et je commence à penser qu'il y a une raison à cela.
Il me semble que cela ressemble à une instruction GOTO
dans d'autres langues et serait considéré comme une mauvaise pratique. Aurais-je raison de supposer cela?
Ce sont des identifiants de rupture de boucle. Ils sont utiles si vous avez des boucles imbriquées (boucles à l'intérieur des boucles) et en utilisant ces identifiants, vous pouvez spécifier conditionnellement quand et de quelle boucle sortir.
Les étiquettes en JavaScript sont utilisées principalement avec break, ou continuent dans des boucles imbriquées pour pouvoir casser le externe, ou continuer la boucle externe à partir du code à l'intérieur de la boucle interne:
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 vous utilisiez continue sans étiquette 'externe', cela irait à la prochaine itération de boucle interne. C'est pourquoi il y a un besoin d'étiquettes en Javascript.
Évitez d'utiliser des étiquettes
Les étiquettes ne sont pas très utilisées en JavaScript car elles rendent les programmes plus difficiles à lire et à comprendre. Dans la mesure du possible, évitez d'utiliser des étiquettes et, selon les cas, préférez appeler des fonctions ou lancer une erreur.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
les ruptures étiquetées peuvent sortir de tout bloc de code pas seulement des boucles
<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";
}
résultat:
test 1 réussi
test 2 réussi
test 3 réussi