【发布时间】:2017-02-19 12:24:07
【问题描述】:
使用while 循环而不是for 循环有什么好处?当我遍历数组时,我总是使用for 循环,所以我想知道我是否在这里遗漏了什么。
我从来没有遇到过for 循环不起作用的情况,但我担心我可能会在这里养成坏习惯。我对循环的使用涉及网页上的元素、动画中的内容等。
【问题讨论】:
标签: javascript loops for-loop while-loop
使用while 循环而不是for 循环有什么好处?当我遍历数组时,我总是使用for 循环,所以我想知道我是否在这里遗漏了什么。
我从来没有遇到过for 循环不起作用的情况,但我担心我可能会在这里养成坏习惯。我对循环的使用涉及网页上的元素、动画中的内容等。
【问题讨论】:
标签: javascript loops for-loop while-loop
这些是我会选择其中一个的原因:
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(;!done;) { // do stuff } for 循环是多用途的,与 while 循环相比,在大多数情况下更好,就性能而言,它们也往往更快(但这不是适用于 js),而循环是仅在绝对必要时才应使用的类型,许多程序员倾向于在整个脚本中使用它们。我的建议是坚持使用for 和do-while 循环,只有在遇到其他两个无法使用的情况时才使用while 循环。
从功能上讲,一个人可以在任何情况下替代另一个人。这个比那个好吗?不在 javascript(您已标记)中,因为它不是编译语言。
但是在像 C++ 这样的语言中,for 循环通常会给编译器一个静态循环计数,编译器可以使用它来优化二进制文件。所以它应该运行得更快(在非常大的循环数上)。
在当今时代,您甚至不会注意到在 2.5 ghz 四核 CPU 上运行 10000 次迭代的循环的性能提升。
但是,就我个人而言,美学对我来说很重要(如果您对编码艺术很认真,那么它对您也很重要)。例如,当您处理外部条件时(您要检查的变量是在循环外部定义的),请使用 while 循环。它只是在语义上如此美丽。此外,while 循环应该是无限循环的事实上的选择(不过,我看不出为什么你会在 javascript 中使用无限循环)。
简而言之,遵循语法。你只是检查一个条件吗?使用while循环。您是否在循环上下文中初始化和递增/递减某些内容以及检查条件?只有这样才能使用 for 循环。
【讨论】:
break 循环。例如:如果您使用 value += array.shift(); 并在 value 中等待模式
您始终可以使用 任一 循环。但是,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";
}
【讨论】: