While 和 For 循环 [关闭]
Posted
技术标签:
【中文标题】While 和 For 循环 [关闭]【英文标题】:While & For-Loops [closed] 【发布时间】:2014-10-21 10:10:37 【问题描述】:我不明白为什么这个函数可以用作 While 循环,而不是用作 For 循环。我正在尝试数到 10 并在每次迭代时打印到控制台。
While 循环:
function oneToTenW()
var x = 0;
while(x < 10)
x++;
console.log ("x is equal to " + x);
For循环:
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 循环时,我得到了:
oneToTenf();
x is equal to 10
有什么想法吗?
【问题讨论】:
可能是for后面的分号? 正如@Trudbert 所说,只需使用括号来产生迭代 我不认为这是一个错字,我认为这是对;
继续for
循环的误解。有区别。
@T.J.Crowder - 你是对的!谢谢。我故意把它放在那里,但会回去复习我的笔记。谢谢。
@Padawan:如果您不确定基本语言结构的正确语法,那么最好查看文档以确保您的语法正确。 MDN 是一个不错的资源。 MDN for
statement
【参考方案1】:
因为你多了一个分号
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);
其中任何一个都会显示0
到9
的值,因为for
循环的工作方式如下:
-
进行初始化 (
x = 0
)
做循环体
做增量 (x++
)
进行测试 (x < 10
)
如果测试为真,则返回步骤 2
【讨论】:
很好的解释。 For-Loop 的一个很好的演练。谢谢 T.J.【参考方案2】:这一行就在这里:
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);
现在该语句将在每次循环迭代时执行。
【讨论】:
【参考方案3】:for 循环后面有一个分号,所以它没有循环。尝试删除那个分号,或者像在 while 循环中那样添加一些括号。
【讨论】:
【参考方案4】:你错过了 for 循环的主体
function oneToTenF()
for(var x = 0; x < 10; x++)
console.log ("x is equal to " + x);
【讨论】:
从技术上讲,循环体并没有丢失。它恰好是一个不符合 OP 要求的声明。但是您的解决方案当然是正确的。 :-)【参考方案5】:这是因为您将;
放在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);
【讨论】:
【参考方案6】:因为你多了一个分号。试试下面的一个
function oneToTenF()
for(var x = 0; x < 10; x++)
console.log ("x is equal to " + x);
【讨论】:
【参考方案7】:正如其他人所说,但我还是会说,
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);
然后它会给你你想要的结果。大括号和分号的人。
【讨论】:
以上是关于While 和 For 循环 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 for 中插入一个 while 循环。认为这是一个脑筋急转弯[关闭]