我的一个朋友正在教授使用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;
}
他告诉我,在代码中标记和包装块是一种好的实践,这样您可以轻松地看到每个部分在做什么。他还说,与无标签的break和continue相比,有标签的更容易阅读,因为您可以确切知道您正在跳出哪个部分。我从未见过这样的代码模式,所以我不确定这是否正确。
我已经使用JavaScript一段时间了,在这里有一些我从未见过的东西,还有一些我仍然不理解。我认为break关键字专门用于退出循环。higher和lower块不是循环,但显然你仍然可以跳出它。这怎么可能?对我来说,跳出不循环的东西似乎很奇怪。您能否也使用break关键字中断函数?
break
不同”,这意味着我需要花时间确保该break
的功能与没有标签时完全相同。 - JimmiTh