Ключевое слово break в Javascript предназначено только для выхода из цикла?

Один из моих друзей преподает в классе программирования с помощью 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 ?

5
задан Peter Olson 8 February 2012 в 20:13
поделиться