【发布时间】:2011-12-27 21:55:04
【问题描述】:
当时我一直对在 for 和 while 循环之间进行选择感到困惑。 在哪些情况下我应该在 JavaScript 中使用“while 循环”而不是“for 循环”?有区别吗?
【问题讨论】:
标签: javascript for-loop while-loop
当时我一直对在 for 和 while 循环之间进行选择感到困惑。 在哪些情况下我应该在 JavaScript 中使用“while 循环”而不是“for 循环”?有区别吗?
【问题讨论】:
标签: javascript for-loop while-loop
就“什么有效”而言,它们是可以互换的。
就最佳实践和惯例而言,for 循环用于已知次数的迭代,而 while 循环将一直执行,直到其预期的工作完成。
【讨论】:
function (elt) {for (let e = elt; e.tagName != "HTML"; e = e.parentElement) {/*do something unknown number of times depending on how deep the elt is in the DOM*/}}
在循环控制结构中可能有三件事:在循环之前执行的操作(例如将循环变量设置为零),在循环的每次迭代中执行的操作(例如递增循环变量),以及你做什么来告诉你是否完成了循环(比如将循环变量与某物进行比较)。如果您拥有这三个,并且它们都很简单,请使用for。如果您只有一个条件来判断您是否已完成循环,请使用while。
【讨论】:
(由于过于主观,很快就会关闭,或者转移到另一个论坛,但无论如何......)
显然,任何 for 循环都可以使用“while”轻松重写。但鉴于以下语法:
for ([initialization]; [condition]; [final-expression])
for 循环使用它显然非常适合有一些简单的初始化和简单的迭代结束更新或计数器增量的情况。将所有循环控制逻辑都放在循环的开始语句中,可以很容易地一目了然地看出是什么使循环滴答作响。
对于 while 循环,迭代结束处理通常必须发生在循环体的底部,因此很难一眼看出循环是如何工作的,但这也更适合以下情况:你必须执行一些计算来决定是否继续循环。
当然,您可以在 for 循环初始化或最终表达式中使用逗号分隔多个语句,但如果这比 i++, j++, k-- 更复杂,它很快就会变得对我来说太混乱了味道和while循环会是更好的选择。
【讨论】:
For 循环非常适合反复执行相同的任务如果您提前知道有多少次你必须重复循环。
另一方面,while 循环 是您必须循环但您不知道提前的理想选择>你需要循环多少次。
例如,假设您想继续从 甲板直到你得到一把铁锹。你不知道你需要多少张卡 选择,所以 for 循环将不起作用。在这样的情况下 你不知道什么时候停止循环,我们可以使用一段时间 循环。
【讨论】: