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

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

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

@H_404_2@

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;
}

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

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

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

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

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

@H_404_2@

for (;;){ // "for a"
  for(;;){ // "for b"
    break; // breaks "for b"
  }
}

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

@H_404_2@

myblock: {
  for(;;){
    for(;;){
      break mybock; // breaks label "myblock"
    }
  }
}

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

@H_404_2@

function myblock(){
  for(;;){
    for(;;){
      return; // exits function "myblock"
    }
  }
}

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

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

@H_404_2@

var again = true;
while (again){
    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;
    while (num !== guess){
        guesses++;
        guess = +prompt((guess < num ? "Too low." : "Too high.") + " Try again.",guess);
    }
    alert("You got it in " + guesses + " guesses! The number is " + num);
    again = prompt("Do you want to guess again? (y/n)","y") == "y";
}

猜你在找的JavaScript相关文章