The markdown left by the Google Translator was messy and now is similar to the original article. Also, parts of the text were untranslated and now they are in spanish.
81 lines
2.1 KiB
Markdown
81 lines
2.1 KiB
Markdown
---
|
|
title: Labeled Statement
|
|
localeTitle: Declaración etiquetada
|
|
---
|
|
## Declaración etiquetada
|
|
|
|
La **Declaración etiquetada** se usa con las declaraciones `break` y `continue`, y sirve para identificar la declaración a la que se aplican las declaraciones `break` y `continue`.
|
|
|
|
### Sintaxis
|
|
```javascript
|
|
nombredelaetiqueta:
|
|
declaraciones
|
|
```
|
|
### Uso
|
|
Sin el uso de una declaración etiquetada, la declaración `break` solo podría salir de un bucle o de una declaración `switch`. Usar una declaración etiquetada permite al `break` saltar fuera de un bloque de código.
|
|
#### Example
|
|
```javascript
|
|
foo: {
|
|
console.log ("Esto imprime:");
|
|
break foo;
|
|
console.log ("Esto nunca se imprimirá");
|
|
}
|
|
console.log ("¡Porque la ejecución salta aquí!")
|
|
/* output
|
|
Esto imprime: ¡Porque la ejecución salta hasta aquí! */
|
|
```
|
|
Cuando se usa con una declaración continue, la declaración etiquetada te permite omitir una iteración de bucle. La ventaja es ser capaz de saltar de un bucle interno a un bucle externo cuando tienes declaraciones de bucles anidados. Sin el uso de una declaración etiquetada, tu solo podrías saltar de la iteración de bucle existente a la `siguiente iteración del mismo bucle`.
|
|
#### Example
|
|
```javascript
|
|
// sin declaración etiquetada, cuando j == i el bucle interno salta a la siguiente iteración
|
|
function test() {
|
|
for (var i = 0; i < 3; i++) {
|
|
console.log ("i=" + i);
|
|
for (var j = 0; j < 3; j++) {
|
|
if (j === i) {
|
|
continue;
|
|
}
|
|
console.log ("j=" + j);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* output
|
|
i = 0 (observa que falta j = 0)
|
|
j = 1
|
|
j = 2
|
|
i = 1
|
|
j = 0 (observa que falta j = 1)
|
|
j = 2
|
|
i = 2
|
|
j = 0
|
|
j = 1 (observa que j = 2)
|
|
*/
|
|
|
|
// usando una declaración etiquetada, en cambio, podemos saltar al bucle externo (i)
|
|
function test() {
|
|
exterior: for (var i = 0; i < 3; i++) {
|
|
console.log ("i=" + i);
|
|
for (var j = 0; j < 3; j++) {
|
|
if (j === i) {
|
|
continue exterior;
|
|
}
|
|
console.log ("j=" + j);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
i = 0 (j solo se registra cuando es menor que i)
|
|
i = 1
|
|
j = 0
|
|
i = 2
|
|
j = 0
|
|
j = 1
|
|
*/
|
|
```
|
|
|
|
### Más información:
|
|
|
|
[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label)
|