Este es el fragmento de código que me da dolor de cabeza. Soy nuevo en JavaScript y estoy aprendiendo los conceptos que su conocimiento me ayudaría mucho. Los detalles del código y la salida se dan a continuación. Si tiene una idea sobre cómo resolver este problema, responda la pregunta. ¡Gracias!
//These are my variables var candy= 10; var cookies= 20; var x= 20; var y= 30; var g= 1; //While Loop while (1 > 10){ console.log ("x + y=50") }//this won't run at all because 1<10 will never be true, I am trying to avoid infinity loops while (g<=5) { console.log("The number is " + g ) g++; }/*if it was '<' it would be an infinity loop or we can just break the loop. output: The number is 1 The number is 2 The number is 3.... All the way up to 5 */ //Do-While Loop do { console.log("This is a do-while loop") } while(candy < 9 && cookies >= x) /*This will execute once even though both the conditions are false, it's just how do-while loops were made*/ //This where the problem comes in do{ console.log("The other number is " + g) g++; } while(g<=5) /*output: The other number is 6 I thought 6 is greater than 5? Why is it bringing such an output yet the condition is g<=5? I was expecting: The other number is 1 The other number is 2.... All the way up to 5 */let g = 1 while (g<=5) { console.log("The number is " + g ) g++; } //Until g is 5 add one to g, this means that g is 6 here console.log(g) do{ console.log("The other number is " + g) g++; } while(g<=5) // a do while loop executes once before the condition is checkedRevisé su código y encontré un problema.
while (g<=5) { console.log("The number is " + g ) g++; }despues de esto la g ya es 5 asi que cuando este venga
do{ console.log("The other number is " + g) g++; } while(g<=5)el ciclo se ejecutará solo una vez debido a que g no está por debajo de 5. si cambia el código como este. funcionará bien
var g=1; do{ console.log("g" + g); g++; }while(g<=5)simplemente elimine los códigos de bucle anteriores que hacen el cambio g
En el primer ciclo, donde g está involucrada, verifica esta condición: (g<=5). Esto significa que el bucle termina cuando g es mayor que 5, ¿verdad?
while (g<=5) { console.log("The number is " + g ) g++; }Aquí tienes
g=1 -> g++ -> g=2
g=2 -> g++ -> g=3
g=3 -> g++ -> g=4
g=4 -> g++ -> g=5
g=5 (g sigue siendo igual a 5, por lo que se cumple su condición) -> g++ -> g=6
g = 6 (g ahora es mayor que 5, por lo que su condición no se cumple. Ya no realiza un ciclo. De todos modos, g = 6 porque lo incrementó con g ++ en la iteración anterior del ciclo)
Cuando haces el siguiente bucle, es un do-while. Esto significa que la condición se verifica después de la iteración.
do{ console.log("The other number is " + g) g++; } while(g<=5)Dicho esto, lo que sucede es:
Imprime "El otro número es 6" porque g es 6 desde la última iteración del bucle anterior
Incrementas g a 7
Verificas la condición: g=7 es menos o igual a 5? Nº --> PARADAS DE BUCLE
Puede intentar depurar y evaluar los valores de g en cada paso.
Además, tenga en cuenta que g se declara fuera de los bucles, por lo que su alcance es "global". Esto significa que el valor no se "restablecerá" en cada nuevo ciclo. Por eso no obtienes lo que esperas:
el otro numero es el 1
El otro número es 2... Todo el camino hasta el 5