而&对于循环

While & For-Loops

本文关键字:循环 于循环 amp      更新时间:2023-09-26

我不明白为什么这个函数作为While循环工作,而不是作为For循环工作。我正在尝试计数到10,并在每次迭代时打印到控制台。

While Loop:

function oneToTenW() {
  var x = 0;
  while(x < 10) {
    x++;
    console.log ("x is equal to " + x);
  }
}

对于环路:

function oneToTenF() {
  for(var x = 0; x < 10; x++);
  console.log ("x is equal to " + x);
}

当我调用While Loop时,我得到的是:

oneToTen();
x is equal to 1
x is equal to 2
x is equal to 3
x is equal to 4
x is equal to 5
x is equal to 6
x is equal to 7
x is equal to 8
x is equal to 9
x is equal to 10

而当我调用For Loop时,我得到的是:

oneToTenf();
x is equal to 10

有什么想法吗?

这一行就在这里:

for(var x = 0; x < 10; x++);

因为末尾有一个分号,所以语句实际上在那里终止,并且循环执行时什么都不做。要让循环执行下面的语句,您需要在循环体中包括该语句,方法是删除分号:

for(var x = 0; x < 10; x++)
  console.log ("x is equal to " + x); // <- the line immediately after the for statement will be executed on every iteration

或者通过将要执行的一个或多个语句封装在块(大括号)中:

for(var x = 0; x < 10; x++) {
  console.log ("x is equal to " + x);
}

现在,每次循环迭代时都会执行该语句。

在for循环后面有一个分号,所以它什么都不循环。试着删除那个分号,也许可以像while循环那样添加一些括号。

因为您有一个额外的分号

function oneToTenF() {
  for(var x = 0; x < 10; x++);
  // Here -------------------^
  console.log ("x is equal to " + x);
}

因此,循环体完全由空语句(;)组成。当它完成时,console.log行运行以显示x的当前值,即现在的10

要将console.log行放入循环体中,从技术上讲,您所要做的就是移除;:

function oneToTenF() {
  for(var x = 0; x < 10; x++)
    console.log ("x is equal to " + x);
}

尽管我总是在控制结构上使用块({}):

function oneToTenF() {
  for(var x = 0; x < 10; x++) {
    console.log ("x is equal to " + x);
  }
}

其中任何一个都会显示值09,因为for循环的工作方式如下:

  1. 进行初始化(x = 0
  2. 做循环体
  3. 执行增量(x++
  4. 进行测试(x < 10
  5. 如果测试为真,则返回步骤2

这是因为您将;放在for行的末尾:

for(var x = 0; x < 10; x++);

这是将一个空语句作为for循环的主体,在循环结束后运行console.log()语句。

应该是:

for(var x = 0; x < 10; x++) {
    console.log ("x is equal to " + x);
}

因为您有一个额外的分号。试试下面的

function oneToTenF() {
  for(var x = 0; x < 10; x++){
  console.log ("x is equal to " + x);
}
}

正如其他人所说,但我还是要说,

function oneToTenF() {
  for(var x = 0; x < 10; x++); < Issue is right there. 
     console.log ("x is equal to " + x);
}

如果你这样做

function oneToTenF() {
  for(var x = 0; x < 10; x++){
     console.log ("x is equal to " + x);
  }
}

然后它会给你想要的结果。大括号和分号man.

您缺少for循环的主体

function oneToTenF() {
  for(var x = 0; x < 10; x++) {
    console.log ("x is equal to " + x);
  }
}