【问题标题】:Continue Statement Confusion继续声明混乱
【发布时间】:2015-05-04 12:20:15
【问题描述】:

javascript 中的continue 语句对我来说真的没有意义,还是我想多了?

例如,假设我是在一个对象内的局:

for (i in JM) {              
    if (JM[i].event == 'StartLocation') {
        continue;
    }
}

如果该 if 语句是 true,那么从技术上讲,它将跳过该迭代。那我们为什么要用continue这个词呢?使用break 这个词不是更有意义吗?但是,break 完全相反,它停止了循环,对吗? (或者可能是一个名为hop 的声明)是有道理的。直到几分钟前才真正想到这一点:P

【问题讨论】:

  • 但是,这里的问题是什么?
  • 是的,你是对的..break 将使执行退出循环,而continue 将使执行停止执行continue 以下的任何内容并开始下一次迭代.. .
  • continue 跳过循环的其余部分并立即进入下一个迭代。
  • 你几乎回答了你自己的问题。继续,继续下一次迭代。 Break,跳出循环。
  • 我想你可能确实想多了。 continue 从下一次迭代继续循环,而 break 完全跳出循环。

标签: javascript


【解决方案1】:

是的,break 将您带出循环并将您置于循环之后的行continue 直接带您回到循环的 next 迭代的开始,跳过循环中剩余的任何行。

for(i in JM)
{ // continue takes you directly here

    if(JM[i].event=='StartLocation'){
        continue;
    }

    // some other code

} // break takes you directly here

如果您只询问单词选择,那么这个问题可能没有很好的答案。使用continue 确实会导致循环迭代继续,就在下一次迭代中。可以选择任何关键字。第一个指定具有这种行为的语言的人只是选择了“继续”这个词。

【讨论】:

  • 我明白了,所以continue 本质上是一个迭代跳跃,在其真实陈述之后继续?这只是让我感到困惑,因为“继续”这个词对我来说意味着继续循环,而不是跳过任何东西。是否可以将 continue 语句视为另一个词,如“hop”或“next”?这些话对我来说更有意义,但不确定是不是我,哈哈。
  • @NiCkNewman 是的,循环立即停止其当前迭代并跳过continue 关键字之后的everything,即使在同一个if 语句中有语句。当然,如果它可以帮助您记住 continue 的实际行为方式,则可以将其更多地视为“跳跃”声明。
  • 是的,只要确保单词后面的功能相同即可。如果我想到使用continue 语句,我会想到一个继续前进的过山车,而不是跳过障碍物(或者在这种情况下是迭代)。如果我想到hop,那就更有意义了。如果这是真的,那么跳过迭代,而不是继续。但更深入一点,我认为 continue 可能会读取它上面的内容,如果那里什么都没有,并且如果 continue 位于真正的语句块中,则语言只会对其进行迭代。这就是我认为正在发生的事情......或者我相信。
  • 现在查看您的代码示例。你是说继续takes you to here,这让我更加困惑。您是说,该 continue 语句使循环再次重复并跳过自身吗?如果是这样,是否会继续成为性能问题?另外,从技术上讲,不是让循环做更多工作的 continue 语句,对吧?既然要回去?
  • @NiCkNewman 不,它没有重复。当您点击continue 语句时,它会跳过当前迭代中的其余行,并立即开始循环的下一次迭代。这绝不应该是性能问题。
【解决方案2】:

continue 关键字类似于break,因为它影响进度 的一个循环。当循环体中遇到continue时,控制跳转 跳出主体并继续循环的下一次迭代。

【讨论】:

    【解决方案3】:

    这样理解:

    for(i in JM){
      if(JM[i].event=='StartLocation'){
            continue;
      }
      /*This code won't executed if the if statement is true and instead will move to next iteration*/
      var testCode = 3;// Dummy code
    }
    

    break 将中断 for 循环(退出 for 循环),但 continue 将跳过当前迭代并移至下一个迭代。

    您将找到相关文档Here

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多