Uno de mis amigos está enseñando una clase de programación con Javascript y una de sus tareas fue crear un juego de adivinar números. Esta fue su ejemplo de implementación:¿La palabra clave break en Javascript solo está pensada para salir de los bucles?
funProgram: for(;;) {
numberGuesser: {
var num = (Math.random() * 100) | 0;
var guess = +prompt("I'm thinking of a number between 0 and 100. Try to guess it.", 0);
var guesses = 1;
guess: for(;;) {
higher: {
lower: {
if(guess === num) break guess;
if(guess > num) break lower;
guess = +prompt("Too low. Try again.", 0);
break higher;
}
guess = +prompt("Too high. Try again.", 0);
}
guesses++;
}
alert("You got it in " + guesses + " guesses! The number is " + num);
}
var again = prompt("Do you want to guess again (y/n)?", "y") === "y";
if(!again) break funProgram;
}
Me dijo que es una buena práctica para etiquetar su código y se envuelve alrededor de los bloques para que pueda ver fácilmente lo que cada sección está haciendo. También dijo que los descansos etiquetados y continuados son mucho más fáciles de leer que los que no están etiquetados porque puedes saber exactamente de qué estás saliendo. Nunca he visto patrones de código como este, así que no estoy seguro de si esto es cierto.
He estado usando Javascript por un tiempo y hay algunas cosas aquí que nunca he visto antes y algunas cosas que todavía no entiendo. Pensé que la palabra clave break
estaba específicamente pensada para salir de los bucles. Los bloques higher
y lower
no son bucles, pero aparentemente todavía puede salir de él. ¿Cómo es eso posible? Me parece extraño salir de algo que no funciona. ¿También puede salir de funciones usando la palabra clave break
?
+1. Yo sería el que está en la valla opuesta de ... "Él". Yo diría que etiquetar todos los saltos "estándar" hará que el código * sea menos legible, porque la falta de "uso cotidiano" de la etiqueta hace que se destaque como "esto es diferente del 'salto' estándar", lo que significa que ' Pasaré tiempo asegurándome de que este 'break' sí funcione exactamente como lo haría sin la etiqueta. – JimmiTh