Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

180
Visualizações
Declaraciones etiquetadas/gotos en javascript

¿Existe un uso legítimo de usar declaraciones etiquetadas en javascript, o es algo que no se usa realmente en el código de producción sino solo en la especificación? Por ejemplo, estaba teniendo más dificultades para descubrir cómo saltar a lugares en el código y tuve que usar este tipo de truco para sortear algunos de los requisitos de salto/declaración etiquetada:

 'use strict'; let for_loop_ran = false; main: do { console.log("Top!"); let arr = [1,2,3,4,5]; if (for_loop_ran) { break; } else { for_loop_ran = true; for (let elem of arr) { console.log(elem); if (elem === 5) continue main; } } } while (true); console.log("Bottom!");

¿Cuál sería un uso más realista de declaraciones etiquetadas (o más bien parecen 'bucles etiquetados') y usar continue / break para uno de esos? ¿O se desaconseja ese tipo de codificación?

Supongo que una opción podría ser saltar a diferentes niveles de un bucle; un ejemplo semi-artificial podría ser:

 let maxNameLength = 5 let frequency = {} let couples = [['david', 'rosy'], ['dylan', 'dasha/daria']]; couples: for (let couple of couples) { persons: for (let person of couple) { let nameLength = 0; letter: for (letter of person) { if (letter in frequency) { frequency[letter] ++; } else { frequency[letter] = 1; } if (++nameLength > maxNameLength) continue persons; } } } console.log(frequency);

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que es seguro decir que entre las personas que prefieren usar lenguajes de alto nivel como JavaScript (o C # o Java, etc.), generalmente se desaconseja la programación de estilo goto . Pero hay una excepción común a esa regla general: salir de un bucle externo de un bucle interno. (Pero tenga en cuenta que no a todo el mundo le gusta esa excepción). JavaScript permite pausas dirigidas (y también continuas dirigidas), que es para lo que son las declaraciones etiquetadas en JavaScript.

Aquí hay un ejemplo:

 const arrays = [ ["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ]; outer: for (const array of arrays) { console.log(`Outer loop code before inner loop`); for (const element of array) { console.log(`Visiting element ${element}`); if (element === "c") { console.log(`Continuing outer`); continue outer; } if (element === "f") { console.log(`Breaking outer`); break outer; } } console.log(`Outer loop code after inner loop`); }

Si ejecuta ese código, notará que el código en el ciclo interno pudo continue y break el ciclo externo . Si continúa , no verá el código después de que se ejecute el ciclo interno antes de que comience la siguiente iteración externa. Si lo rompe , detiene el bucle exterior por completo. No podría hacer eso sin una etiqueta.

Si debe usarlos es una cuestión de opinión. Algunos creen rotundamente que no deberías, que deberías usar variables de bandera o dividir más las cosas o evitarlas. Otros creen que las break dirigidas están bien, pero no las continue . Otros están contentos con ambos. Entonces, de nuevo, si los usa es una cuestión de opinión, pero JavaScript los permite.

De manera más controvertida (sospecho), JavaScript también permite break (pero no continue ) de un bloque etiquetado, incluso si no es un bucle:

 console.log("Before"); block: { console.log("Inside - 1"); if (/*some condition*/true) { console.log("Breaking"); break block; } console.log("Inside - 2"); } console.log("After");

Tenga en cuenta que Inside - 2 nunca se registra, la break salta fuera del bloque.


Subjetivamente : si viera un bucle cuyo único propósito fuera permitir una continue o break dirigida, lo consideraría una mala práctica.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda