Как добавить метку к идентификатору?
У JavaScript есть относительно неизвестная функциональность, которая позволяет нам идентифицировать цикл. После завершения идентификации мы можем использовать операторы break или continue, чтобы прервать цикл и продолжить его выполнение. .
Проще говоря, оператор метки предоставляет идентификатор для оператора, на который мы можем ссылаться.
Мы можем маркировать любые операторы, хотя это полезно только для тех операторов, у которых есть такие тела, как цикл и условия. Например, мы можем использовать операторы меток с break или continue. Таким образом, его можно использовать как альтернативу оператору goto, поскольку в JavaScript его нет.
label : statement
label - Любой идентификатор JavaScript, не являющийся зарезервированным словом.
инструкция - инструкция JavaScript. «Break» можно использовать с любым помеченным оператором, а «continue» можно использовать с циклом помеченных операторов.
Важное примечание: это не обычная функция. Разработчики используют его очень редко. Однако мы должны знать, что это такое, как им пользоваться, чтобы в случае необходимости мы знали, как это делать.
Использование цикла For с пометкой continue
var loop1, loop2; outerLoop: for (loop1 = 0; loop1 <= 2; loop1++) { //"outerLoop" for statement innerLoop: for (loop2 = 0; loop2 <= 2; loop2++) { //"innerLoop" for statement if (loop1 === 1 && loop2 === 1) { continue outerLoop; } console.log('loop1 = ' + loop1 + ', loop2 = ' + loop2); } } // Output --> loop1 = 0, loop2 = 0 loop1 = 0, loop2 = 1 loop1 = 0, loop2 = 2 loop1 = 1, loop2 = 0 loop1 = 2, loop2 = 0 loop1 = 2, loop2 = 1 loop1 = 2, loop2 = 2 // Notice how it skips both "loop1 = 1, loop2 = 1" and "loop1 = 1, loop2 = 2"
Использование циклов For с помеченным разрывом
var loop1, loop2; outerLoop: for (loop1 = 0; loop1 <= 2; loop1++) { //The first for statement is labeled "outerLoop" innerLoop: for (loop2 = 0; loop2 <= 2; loop2++) { //The second for statement is labeled "innerLoop" if (loop1 === 1 && loop2 === 1) { break outerLoop; } console.log('loop1 = ' + loop1 + ', loop2 = ' + loop2); } } // Output is -> loop1 = 0, loop2 = 0 loop1 = 0, loop2 = 1 loop1 = 0, loop2 = 2 loop1 = 1, loop2 = 0
Использование оператора Break с помеченным блоком
breakLabel: { console.log('Inside Break Label'); break breakLabel; console.log('this will not be executed'); } console.log('Outside Break Label'); // Output --> Inside Break Label Outside Break Label
Использование помеченных объявлений функций
Мы можем использовать метки в простых блоках, но только операторы break могут использовать метки без цикла.
functionLabel : function doSomething() {} In strict mode code, however, this will throw a SyntaxError: 'use strict'; functionLabel: function doSomething() {} // SyntaxError: functions cannot be labelled