Javascript中的break关键字是否仅用于打破循环?

前端之家收集整理的这篇文章主要介绍了Javascript中的break关键字是否仅用于打破循环?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我的一个朋友正在用Javascript教授一个编程课程,他的一个任务就是创建一个数字猜谜游戏.这是他的示例实现:

  1. funProgram: for(;;) {
  2. numberGuesser: {
  3. var num = (Math.random() * 100) | 0;
  4. var guess = +prompt("I'm thinking of a number between 0 and 100. Try to guess it.",0);
  5. var guesses = 1;
  6. guess: for(;;) {
  7. higher: {
  8. lower: {
  9. if(guess === num) break guess;
  10. if(guess > num) break lower;
  11. guess = +prompt("Too low. Try again.",0);
  12. break higher;
  13. }
  14. guess = +prompt("Too high. Try again.",0);
  15. }
  16. guesses++;
  17. }
  18. alert("You got it in " + guesses + " guesses! The number is " + num);
  19. }
  20. var again = prompt("Do you want to guess again (y/n)?","y") === "y";
  21. if(!again) break funProgram;
  22. }

他告诉我,标记代码并在其周围包装块是一个很好的做法,这样您就可以轻松地看到每个部分正在做什么.他还说标记的断点和继续比未标记的断点容易阅读,因为你可以确切地知道你正在突破什么.我从未见过这样的代码模式,所以我不确定这是不是真的.

我已经使用了一段时间的Javascript,这里有一些我以前从未见过的东西和一些我仍然不理解的东西.我认为break关键字专门用于打破循环.较高和较低的块不是循环,但显然你仍然可以突破它.怎么可能?打破一些不循环的东西对我来说似乎很奇怪.你还可以使用break关键字打破函数吗?

最佳答案
打破can in fact have labels(并接受它们).但是,我不确定“他”是谁,但我会说“他”正在传达他的编程理想,而不是一个特定的标准.也就是说,没有必要使用标签,它只是让那个特定的人更容易辨认. (而且,恕我直言,标签让人想起BASIC / GOTO天,通常会导致Spaghetti Code).

额外信用:询问您的朋友他们以前是否用BASIC写作;我打赌你会得到一个“是”(以及在课程期间有很多坏习惯 – 这不是简介,我从来没有对BASIC / VB程序员有过良好的经验]编码模式))

break命令通常用于退出循环,但是如果代码块嵌套在标签中,那么您将建立另一个可以中断的块.它还为您提供了更多的灵活性,以确定中断的出口位置.例如:

  1. for (;;){ // "for a"
  2. for(;;){ // "for b"
  3. break; // breaks "for b"
  4. }
  5. }

在这种情况下,break仅用于退出嵌套(“for b”)循环.然而:

  1. myblock: {
  2. for(;;){
  3. for(;;){
  4. break mybock; // breaks label "myblock"
  5. }
  6. }
  7. }

在这种情况下,break实际上是退出两个循环,因为你指示它完全退出标签块.这几乎就像有:

  1. function myblock(){
  2. for(;;){
  3. for(;;){
  4. return; // exits function "myblock"
  5. }
  6. }
  7. }

返回块退出块的方式类似于break myblock的行为方式.

顺便说一下,我发现这有点容易阅读:

  1. var again = true;
  2. while (again){
  3. var num = (new Date()).getMilliseconds() % 100,guess = +prompt("I'm thinking of a number between 0 and 100. Try to guess it.","1"),guesses = 1;
  4. while (num !== guess){
  5. guesses++;
  6. guess = +prompt((guess < num ? "Too low." : "Too high.") + " Try again.",guess);
  7. }
  8. alert("You got it in " + guesses + " guesses! The number is " + num);
  9. again = prompt("Do you want to guess again? (y/n)","y") == "y";
  10. }

猜你在找的JavaScript相关文章