Является ли использование меток в JavaScript плохой практикой?
Я только что узнал об использовании label s в JavaScript, например:
for (var i in team) {
if(i === "something") {
break doThis: //Goto the label
} else {
doThat();
}
}
doThis: //Label
doIt();
Я не слышал об этом до сих пор, и я не могу найти много информации в интернете об этом, и я начинаю думать, что есть причина для этого.
Мне кажется, что это похоже на утверждение
GOTO в других языках и будет считаться плохой практикой. Был бы я прав, предположив это? 4 ответов:
Это идентификаторы прерывателей цикла. Они полезны, если у вас есть вложенные циклы (циклы внутри циклов) и с помощью этих идентификаторов вы можете условно указать, когда и из какого цикла нужно вырваться.
Метки в JavaScript используются в основном с break, или continue во вложенных циклах, чтобы иметь возможность разбить внешний, или continue внешний цикл из кода внутри внутреннего цикла:
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.
Избегайте использования меток
Метки не очень часто используются в JavaScript, так как они делают программы труднее читать и понимать. Насколько это возможно, избегайте используя метки и, в зависимости от случаев, предпочитая вызывать функции или выбрасывание ошибки.
Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Помеченные разрывы могут вырваться из любого блока кода, а не только из циклов
<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 пройден
Comments