es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for 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 cuando k es igual a 9, se ejecuta la sentencia if y k se incrementa a 10. Luego, la sentencia continue hace que el bucle omita la iteración actual y pase a la siguiente, que comienza con k igual a 10. Por lo tanto, cuando se llama nuevamente a console.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 sentencia if hace que continue omita la iteración cuando k es igual a 9. Luego, cuando el bucle inicia una nueva iteración con k igual a 10, se llama a console.log(k) y se imprime 10.

    Por lo tanto, la diferencia en la salida entre utilizar console.log(k+1) y console.log(k) se debe a que en el primer caso siempre se imprime k+1 (excepto cuando se termina el bucle), mientras que en el segundo caso solo se imprime el valor de k en sí mismo (que puede ser afectado por la sentencia if y la sentencia continue).

    Espero que esto aclare las cosas. Hazme saber si tienes más preguntas.

Comments are closed.