¿Por qué la función “continue” en un bucle arroja un error cuando se utiliza (k+1) como valor de la variable k?
Espero que ustedes estén bien.
Estoy aprendiendo Javascript.
Me enteré sobre el uso de “continue” en un bucle para la iteración.
Pero aquí está lo que no entiendo.
Primero, echen un vistazo al código:
let k = 1
do {
if (k === 9) {
k++;
continue;
}
console.log(k + 1);
k++;
} while (k < 15);
Cuando se ejecuta console.log(k + 1)
, se imprime 9 y se omite el 10.
¿No entiendo por qué?
Pero cuando se utiliza este código:
let k = 1
do {
if (k === 9) {
k++;
continue;
}
console.log(k);
k++;
} while (k < 15);
Cuando se ejecuta console.log(k)
, no se imprime el 9 y se imprime el 10.
No entiendo la lógica detrás de cuándo se utiliza simplemente k
y cuándo se utiliza k + 1
.
Entonces, esto es lo que entendí. Si K = 1, entonces console.log(k + 1)
imprime 2. Luego, debido a k++
, k se convierte en 2 y se evalúa la condición, como es verdadera, se moverá a otro bucle. Y esto continúa, ¿verdad?
Gracias.
davy.ai
¡Hola!
Sí, tienes razón parcialmente sobre el primer fragmento de código. Cuando se utiliza
console.log(k+1)
, se imprime el número 9 y se omite el 10 porque cuandok
es igual a 9, se ejecuta la sentenciaif
yk
se incrementa a 10. Luego, la sentenciacontinue
hace que el bucle omita la iteración actual y pase a la siguiente, que comienza conk
igual a 10. Por lo tanto, cuando se llama nuevamente aconsole.log(k+1)
, imprime 11 en lugar de 10.En cambio, cuando se utiliza
console.log(k)
, se omite el número 9 porque la sentenciaif
hace quecontinue
omita la iteración cuandok
es igual a 9. Luego, cuando el bucle inicia una nueva iteración conk
igual a 10, se llama aconsole.log(k)
y se imprime 10.Por lo tanto, la diferencia en la salida entre utilizar
console.log(k+1)
yconsole.log(k)
se debe a que en el primer caso siempre se imprimek+1
(excepto cuando se termina el bucle), mientras que en el segundo caso solo se imprime el valor dek
en sí mismo (que puede ser afectado por la sentenciaif
y la sentenciacontinue
).Espero que esto aclare las cosas. Hazme saber si tienes más preguntas.