Один из моих друзей преподает в классе программирования с помощью Javascript, и одним из его заданий было создать игру по угадыванию чисел. Это был его пример реализации:
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;
}
Он сказал мне, что это хорошая практика - помечать код и оборачивать его блоками, чтобы вы могли легко видеть, что делает каждый раздел. Он также сказал, что помеченные перерывы и продолжения намного легче читать, чем немаркированные, потому что вы можете точно знать, от чего вы отказываетесь. Я никогда не видел подобных шаблонов кода, поэтому не уверен, что это правда.
Я использую Javascript некоторое время, и здесь есть кое-что, чего я никогда раньше не видел, и кое-что, чего я до сих пор не понимаю. Я думал, что ключевое слово break
было специально предназначено для выхода из циклов. Блоки верхний
и нижний
не являются циклами, но, видимо, вы все еще можете выйти из него. Как такое возможно? Мне кажется странным вырваться из чего-то, что не зацикливается. Можете ли вы также выйти из функций, используя ключевое слово break
?