Command Palette

Search for a command to run...

Labels (Etiquetas) en bucles

Los labels permiten identificar bucles específicos para controlar el flujo con break y continue en estructuras anidadas complejas, aunque su uso debe ser moderado.

Lectura: 9 min
Nivel: Intermedio

TL;DR - Resumen rápido

  • Labels son identificadores que marcan sentencias o bucles
  • Permiten usar break y continue con bucles externos específicos
  • Sintaxis: nombreLabel: sentencia
  • Útiles para salir de múltiples niveles de bucles anidados
  • Reducen la necesidad de variables de control adicionales
  • Usarlos en exceso reduce la legibilidad del código
  • Considera alternativas como funciones antes de usar labels

¿Qué son los labels?

Los labels (etiquetas) son identificadores que puedes colocar antes de cualquier sentencia en JavaScript para marcarla con un nombre. Aunque pueden usarse con cualquier sentencia, su uso más común y útil es con bucles, permitiéndote referenciar bucles específicos cuando usas break o continue en estructuras anidadas.

Sin labels, break y continue solo afectan el bucle más interno. Con labels, puedes especificar exactamente qué bucle quieres controlar, incluso si está varios niveles arriba en la anidación. Esto es especialmente útil cuando trabajas con bucles anidados complejos y necesitas salir o continuar desde un nivel específico.

Sintaxis básica

La sintaxis de un label consiste en un identificador válido de JavaScript seguido de dos puntos (:) antes de la sentencia que quieres marcar. El nombre del label sigue las mismas reglas que las variables: debe comenzar con letra, guion bajo o signo de dólar.

sintaxis-basica.js
Loading code...

El label se coloca directamente antes del bucle que quieres marcar. Por convención, los labels suelen escribirse en minúsculas y ser descriptivos del propósito del bucle. Una vez definido el label, puedes referenciarlo con break nombreLabel o continue nombreLabel para controlar ese bucle específico desde cualquier nivel de anidación dentro de él.

Nomenclatura de labels

Por convención, usa nombres descriptivos en minúsculas para labels: bucleExterno, busqueda, matriz. Evita nombres genéricos como loop1 o l.

Labels con break

El uso más común de labels es con break para salir de múltiples niveles de bucles anidados a la vez. Sin labels, necesitarías variables de control adicionales para lograr el mismo efecto.

labels-con-break.js
Loading code...

Con break nombreLabel, puedes salir directamente del bucle marcado con ese label, sin importar cuántos niveles de anidación haya entre el break y el bucle etiquetado. Esto es mucho más limpio que usar variables booleanas para controlar cuándo salir de bucles externos. En el ejemplo, encontrar el valor 5 causa que se salga inmediatamente de ambos bucles, ahorrando iteraciones innecesarias.

Salir de múltiples niveles

Labels con break permiten salir de múltiples niveles de bucles con una sola sentencia, evitando la necesidad de variables de control adicionales.

Labels con continue

También puedes usar labels con continue para saltar a la siguiente iteración de un bucle externo específico, no solo del bucle interno. Esto es útil cuando quieres omitir el resto de las iteraciones internas y continuar con la siguiente iteración del bucle externo.

labels-con-continue.js
Loading code...

continue nombreLabel salta directamente a la siguiente iteración del bucle marcado con ese label. Esto es diferente a un continue normal que solo afecta el bucle más interno. En el ejemplo, cuando encontramos ciertos valores en el bucle interno, podemos saltar directamente a la siguiente iteración del bucle externo, omitiendo todo el código restante en ambos niveles de anidación.

Labels en bucles anidados

Los labels brillan especialmente en bucles con múltiples niveles de anidación, donde controlar el flujo sin ellos requeriría lógica adicional compleja. Permiten escribir código más directo y expresivo.

bucles-anidados.js
Loading code...

El ejemplo muestra las tres formas de manejar bucles anidados: sin control de flujo (recorre todo), con variable de control (requiere lógica adicional), y con labels (directo y claro). Los labels eliminan la necesidad de variables booleanas adicionales y hacen el código más legible al expresar la intención directamente. Sin embargo, demasiada anidación con labels puede hacer el código difícil de seguir.

No abuses de la anidación

Aunque los labels facilitan trabajar con bucles anidados, más de 2-3 niveles de anidación indica que deberías refactorizar tu código, usando funciones auxiliares en lugar de más anidación.

Cuándo usar labels

Los labels son una herramienta poderosa pero deben usarse con moderación. Son útiles en situaciones específicas pero pueden hacer el código menos legible si se abusan de ellos. Aquí hay guías sobre cuándo son apropiados.

cuando-usar-labels.js
Loading code...

Usa labels cuando necesites salir o continuar desde bucles externos en estructuras anidadas y cuando la alternativa sea más compleja. No los uses para bucles simples de un solo nivel, ni cuando puedas lograr lo mismo con un return en una función. Los labels son especialmente útiles en algoritmos que trabajan con matrices o estructuras de datos multidimensionales donde necesitas control fino del flujo.

Alternativas a labels

Antes de usar labels, considera si hay alternativas más claras. En muchos casos, refactorizar el código usando funciones auxiliares o métodos de array produce código más legible y mantenible.

alternativas.js
Loading code...

Las alternativas más comunes a labels son: extraer la lógica a funciones (permitiendo usar return en lugar de break), usar métodos de array como .some() que cortocircuitan automáticamente, o reestructurar el código para reducir anidación. Estas alternativas suelen ser más fáciles de entender y mantener que código con labels, especialmente para desarrolladores no familiarizados con ellos.

Funciones sobre labels

En la mayoría de casos, extraer la lógica a funciones auxiliares es más claro que usar labels. Las funciones permiten usar return temprano, nombrar la operación descriptivamente, y reutilizar código.

Casos prácticos

Veamos ejemplos reales donde los labels aportan valor, resolviendo problemas específicos de forma elegante sin complicar excesivamente el código.

casos-practicos.js
Loading code...

Los casos prácticos muestran situaciones donde labels son la herramienta apropiada: buscar en matrices bidimensionales, validar estructuras anidadas, y procesar pares de elementos. En cada caso, los labels hacen el código más directo que las alternativas. Sin embargo, nota que muchos de estos casos también podrían resolverse con funciones auxiliares, que a menudo son más legibles.

Resumen

Resumen: Labels en bucles

Conceptos principales:

  • Labels marcan sentencias con un identificador
  • Sintaxis: nombreLabel: sentencia
  • break nombreLabel sale del bucle marcado
  • continue nombreLabel salta a siguiente iteración marcada
  • Útiles para bucles anidados complejos

Mejores prácticas:

  • Usa nombres descriptivos para labels
  • Aplica solo en bucles anidados donde aporten valor
  • Considera funciones auxiliares como alternativa
  • Evita más de 2-3 niveles de anidación
  • No uses labels en bucles de un solo nivel