【问题标题】:Why are these semicolumns in this for loop?为什么这些半列在这个 for 循环中?
【发布时间】:2017-12-05 09:19:21
【问题描述】:

我只是在查看 W3schools,并且正在查看“for 循环”。我看到了这个代码示例:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";
for (;cars[i];) {
    text += cars[i] + "<br>";
    i++;
}
document.getElementById("demo").innerHTML = text;

我在“for 循环”中看到了这些半列,我删除了它们并尝试再次运行它。正如你所料,我得到了一个错误。为什么这些半列在那里?这是我第一次看到这个,我真的很好奇为什么这些需要在那里。

谢谢你能给我一些关于这方面的信息,因为我找不到任何关于它的信息...

【问题讨论】:

  • 它就像一个while循环。循环将一直持续到数组结束。这意味着没有初始化。它将一直持续到 car[i] 变为假。当 i>=car.length 时,car[i] 将变为 false
  • @HimanshuArora9419 会先遍历数组,完成后显示?
  • i 在 for 外部声明和初始化,在块内部递增。当 car[i] 未定义时,条件为假,循环终止。
  • 这是因为有些开发者太酷了,无法使用while循环。
  • 这就是你不去 w3fools 的原因。到底谁使用for 这样的循环而不将i 声明和i++ 增量移动到for 语句中?!?在一个本应成为示例的网站上。

标签: javascript for-loop


【解决方案1】:

你的代码

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0; // initialized here
var text = "";
for (;cars[i];) {
    text += cars[i] + "<br>";
    i++; // it will handle increment
}
document.getElementById("demo").innerHTML = text;

相同
for (var i=0;cars[i];i++) {
    text += cars[i] + "<br>";
}

在您的代码中,您已初始化 var i 并在循环内递增。

【讨论】:

    【解决方案2】:

    for循环由以下3部分组成:

    第一部分初始化循环;第二个决定是否继续循环,第三个在每次迭代结束时做一些事情。

    但是,它们中的每一个都是可选的。

    for (;cars[i];) 语句同

    while(cars[i]){
        //code
    }
    

    注意:也存在for(;;),相当于:

    while(true){ }
    

    【讨论】:

    • 感谢您的信息,我通常使用“while 循环”。但这似乎是一件非常方便的事情,可以对我的一些代码有好处。谢谢大佬!
    【解决方案3】:
    for (;cars[i];)   
    
    • 第一个分号: 通常在 for 循环中我们声明一个计数器。但是,这里的计数器已经在 for 循环之外定义了。所以,一句空话。

    • 第二个分号: 一旦计数器i 超过数组的长度,使用 arr[i] while return undefined 这是错误的,循环将被终止。通常在第二个分号之后我们递增或递减计数器,但这里计数器在 for 循环本身中递增。

    分号是为了避免语法错误。

    【讨论】:

      【解决方案4】:

      for循环的思想结构应该是:

      for(&lt;init&gt;;&lt;condition&gt;;&lt;operation after each iteration&gt;)

      如:

      init: 将在循环之前执行一次

      条件: 每次输入都会被检查为真实性

      每次迭代后的操作: 将在每次迭代后执行

      它们是可选的。

      对于特定示例,您之前使用 var i=0 执行的 init 操作和每次迭代后执行的 操作 您正在手动执行 i++ 因此预计正常运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-14
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多