【问题标题】:Why do we use breaks in JavaScript loops?为什么我们在 JavaScript 循环中使用中断?
【发布时间】:2011-09-05 13:45:19
【问题描述】:

我知道“break”用于在满足特定条件之前停止循环,但我真的很困惑为什么在我们可以选择使我们的标准更好时使用 break。例如看这段代码:

var i = 0;
for (i = 0; i <= 10; i++) {
    if (i == 3) {
        break;
    }
    document.write("The number is " + i);
    document.write("<br />");
}

我很清楚这个 break 命令将在变量的值达到 3 时终止循环,但我的问题是为什么我们使用 break 而不是让我们的条件像 i

【问题讨论】:

  • 好点,很想看到 break 的良好应用(并继续),因为到目前为止我看到的大部分内容似乎都会导致代码晦涩难懂
  • 我不知道你为什么在这种情况下使用 break
  • 不使用常量时使用break。如果你循环一个对象数组并检查每个对象中的一个值是否为 3,你真的不知道它会在 i == 3 时出现,对吧?但是,在您的示例中,break 的用法很愚蠢,是的。

标签: javascript loops for-loop break


【解决方案1】:

一个简单的例子是你循环遍历数组中的对象,寻找满足特定条件的对象。找到该对象后,您无需检查其余部分,因此请使用 break

【讨论】:

  • 这让我更明白了。
【解决方案2】:
for (var i = 0; i < arr.length; i++) {
  var e = arr[i];
  if (someCondition(e)) {
    break;
  }
}
// use e

对比

for (var i = 0; !someCondition(arr[i]); i++);
var e = arr[i];
// use e

是的,您可以有更好的条件,但这意味着您将逻辑放在 for 循环语句中而不是正文中。这会很快导致代码不可读。

breakcontinue 可读性更强

【讨论】:

  • @Luis 取决于 someCondition 是什么。取决于您强制进入循环条件的逻辑和技巧。取决于您想要优化简洁性而不是可读性的程度
【解决方案3】:

例如,当您在 10 个项目的数组中搜索某些内容时,您想从 0 .. 9 循环。但是,一旦找到结果,就没有进一步搜索的用处,因此您可以 @987654321 @ 并跳出循环。

【讨论】:

    【解决方案4】:

    在你的例子中,它是一个糟糕的循环条件。

    但是在处理其他对象时会变得非常复杂。看我的例子。

    var i = 0;
    var myArrayOfObjects = ....
    for (i = 0; i <= 10; i++) {
        if (myArrayOfObject[i].someProperty == 3) {
            break;
        }
        document.write("The number is " + i);
        document.write("<br />");
    }
    

    【讨论】:

      【解决方案5】:

      我很确定这只是向您展示break 工作原理的一段代码。实际上你不会写那样的东西。

      不过,break 有它的优势。您可以在任何时候退出循环(不仅是在循环条件这样的情况下)

      【讨论】:

        【解决方案6】:

        为了补充其他人所说的内容,有时您只需要在触发某个事件时才需要中断。类似这样的代码:

        while(true)
        {
        //run application
        if(event)
        
           break;
        
        
        }
        //end application
        

        在许多应用程序的上下文中都有意义,尤其是游戏。

        此外,有时您可能需要在循环中间而不是在循环开始时检查条件,因此使用 break 不仅使代码更具可读性,在某些情况下还必不可少。

        【讨论】:

          猜你喜欢
          • 2013-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-11
          • 1970-01-01
          相关资源
          最近更新 更多