JavaScript 中的 While 循环与 For 循环? [关闭]

Posted

技术标签:

【中文标题】JavaScript 中的 While 循环与 For 循环? [关闭]【英文标题】:While Loops vs. For Loops in JavaScript? [closed] 【发布时间】:2017-02-19 12:24:07 【问题描述】:

使用while 循环而不是for 循环有什么好处?当我遍历数组时,我总是使用for 循环,所以我想知道我是否在这里遗漏了什么。

我从来没有遇到过for 循环不起作用的情况,但我担心我可能会在这里养成坏习惯。我对循环的使用涉及网页上的元素、动画中的内容等。

【问题讨论】:

【参考方案1】:

这些是我会选择其中一个的原因:

for循环语法:

for( int i = 0; i > 10; i++)

    //Some code here

我会使用 for 循环,因为我可能知道我需要执行的迭代次数,而且我有一个 INCREMENTING 变量,它有时会很方便。

While-loop 语法:

while(!done)

    //Some code goes here

当我不确定我可能需要执行多少次迭代时,我会使用此循环。示例:等待用户输入正确的输入值并继续循环,直到他/她输入正确的值。

Do-While 循环语法:

do

    //Some code here

while(!done);

这个循环与 while 循环几乎相同,但当我需要完成至少一次的事情时,我更喜欢这个循环,然后我开始验证它会让我想要循环并再次执行该代码。示例:第一次询问用户输入,然后验证它。如果输入错误,则循环返回并再次请求输入

【讨论】:

我知道这篇文章已经过时了,我觉得我必须这样做。 for 循环也可以像 while 循环一样使用,exp:for(;!done;) // do stuff for 循环是多用途的,与 while 循环相比,在大多数情况下更好,就性能而言,它们也往往更快(但这不是适用于 js),而循环是仅在绝对必要时才应使用的类型,许多程序员倾向于在整个脚本中使用它们。我的建议是坚持使用fordo-while 循环,只有在遇到其他两个无法使用的情况时才使用while 循环。 只想说 setInterval() 和 clearInterval() 是我用来等待用户输入的。通过这种方式,您可以控制循环的速度,而不是控制循环不受限制和全速运行。我可以使用这种方式描述的while循环来迭代通过改变数组来构建一个字符串,以便在while循环中有一个明确的而不是那么突出的结束。【参考方案2】:

从功能上讲,一个人可以在任何情况下替代另一个人。这个比那个好吗?不在 javascript(您已标记)中,因为它不是编译语言。

但是在像 C++ 这样的语言中,for 循环通常会给编译器一个静态循环计数,编译器可以使用它来优化二进制文件。所以它应该运行得更快(在非常大的循环数上)。

在当今时代,您甚至不会注意到在 2.5 ghz 四核 CPU 上运行 10000 次迭代的循环的性能提升。

但是,就我个人而言,美学对我来说很重要(如果您对编码艺术很认真,那么它对您也很重要)。例如,当您处理外部条件时(您要检查的变量是在循环外部定义的),请使用 while 循环。它只是在语义上如此美丽。此外,while 循环应该是无限循环的事实上的选择(不过,我看不出为什么你会在 javascript 中使用无限循环)。

简而言之,遵循语法。你只是检查一个条件吗?使用while循环。您是否在循环上下文中初始化和递增/递减某些内容以及检查条件?只有这样才能使用 for 循环。

【讨论】:

我喜欢最后一句话。 “不过,我看不出为什么你会在 javascript 中出现无限循环。”当您使用二叉树、四叉树或八叉树数据结构时,您将需要它。 无限循环在处理元素数量不断变化的数组时很有用,当您获得正确类型的响应或数组为空时,您可以break 循环。例如:如果您使用 value += array.shift(); 并在 value 中等待模式【参考方案3】:

您始终可以使用 任一 循环。但是,for 循环最常见的用法是当迭代次数已知,而while 循环的迭代次数不确定或将取决于特定条件。例如:

var arr = ["a", "b", "c"];
for (let i=0; i<arr.length; i++)  // will loop 3 times (length of arr = 3)
    // do something


var x = "Hello";
while (x != "World") 
    // do something
    if (some_condition) 
        // do something
    
    else x = "World";

【讨论】:

以上是关于JavaScript 中的 While 循环与 For 循环? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

python中的while循环与for循环怎么样那个比较好用?

如何将在JavaScript中保存为数组的数字与while循环相加

javascript中while循环do....while与for循环的用法和区别

javascript中,while循环与for循环执行效率上的差异?

while循环中的Javascript continue语句导致无限循环

while 循环中的赋值 - Javascript