Tengo una función while que se ejecutará en modo automático si el modo automático está activado ( checkBox.checked )
El problema es que este código solo se detiene una vez que tanto a como b superan el límite de mi juego # ( bestof.value ). Quiero que se detenga una vez, solo uno de estos no es cierto.
Cuando uso while(a || b < bestof.value) se agota el tiempo hasta que la pila alcanza su límite. Tampoco devuelve valores.
if ( checkBox.checked == true ) { while( a && b < bestof.value ) { myFunction(); } };¿Alguna idea de cómo puedo solucionar esto?
¿Está tratando de decir que se supone que a y b son más pequeños que bestof.value?
Desafortunadamente, no es así como funciona la sintaxis, && separa las declaraciones, por lo que básicamente estás diciendo que a es verdadero y b es más pequeño que...
Lo que necesitas es esto:
if (checkBox.checked == true){ while(a < bestof.value && b < bestof.value){ myFunction(); };Como se dio cuenta correctamente, su código solo se detiene tan pronto como a y b están por encima del valor, ya que verifica si a existe y b está por encima del valor, por lo que básicamente su activación es cuando b supera el valor.
Otro ejemplo:
let a = 1 let b if (a) { console.log("a exists") } if (b) { console.log("b exists") } Como puede ver, "b existe" no se está imprimiendo, y esto es básicamente lo que le pregunta al ciclo while antes de && , si existe...
Errores que cometiste:
while la condición para " Quiero que el ciclo se detenga una vez que uno de a o b sea mayor que el límite de mi juego " es la misma que " ejecutar el ciclo hasta que tanto a como b sean menores que el límite ": while(a < bestof.value && b < bestof.value) { ... }if la condición es booleana por su cuenta, JS lo hará automáticamente, así que esto es suficiente: if (checkBox.checked) { ... } if (checkBox.checked == true){ while(a && b < bestof.value) { myFunction(); // ↑ here you forget to close while body };Además: siempre puede detener cualquier bucle con la palabra clave break :
white(condition) { if (needToStop) { break; } }Conclusión: su código debería verse así:
if (checkBox.checked) { while(a < bestof.value && b < bestof.value) { myFunction(); } };