Javascript while语句有哪些好的用途?

Javascript while语句有哪些好的用途?,javascript,Javascript,每当我想到使用while循环,我都不明白为什么不能只使用if语句。我知道while循环在给定语句为true时运行,但是如果条件在块内瞬间终止,那么我就无法想象在“某事为true”时发生的任何事情。如果有人能举例说明我应该如何/为什么使用while循环。非常感谢。虽然是一种循环结构,而不仅仅是另一种形式的如果 var i = 0; while ( i < 10 ) { //this stuff will happen until //i < 10 // us

每当我想到使用
while循环
,我都不明白为什么不能只使用
if语句
。我知道while循环在给定语句为true时运行,但是如果条件在块内瞬间终止,那么我就无法想象在“某事为true”时发生的任何事情。如果有人能举例说明我应该如何/为什么使用
while循环
。非常感谢。

虽然
是一种循环结构,而不仅仅是另一种形式的
如果

var i = 0;

while ( i < 10 ) {
    //this stuff will happen until
    //i < 10

    // usually you iterate the counter so it
    // eventually breaks the loop because
    // i < 10 is no longer true
    i++;
}
var i=0;
而(i<10){
//这种事情会一直持续到
//i<10
//通常您迭代计数器,以便
//最终打破了循环,因为
//我认为10岁以下不再是真的
i++;
}
这和这一样

for (var i = 0; i < 10; i++) {
    //this stuff will happen until
    //i < 10
}
for(变量i=0;i<10;i++){
//这种事情会一直持续到
//i<10
}
while的良好用例

通常,当需要进行的迭代次数已知时,会使用
for
循环,因此,通常当您在数组上迭代并且知道数组长度
for
时,是一个不错的选择,因为您可以显式设置迭代次数


while
的一个更好的用例是当迭代量不是静态的(已知)和/或您正在等待一个事件发生以打破循环时。

while循环将反复执行,只要满足条件,即如果条件从未改变,它将变为无穷大


当条件满足时,
if
将执行一次
,而
将继续运行,直到条件变为false。
如果在块结束时条件仍然为真,则循环将再次运行


if
只运行一次。

那么
if语句将不会循环。除非你把它放在一个循环中,否则它只会发生一次。只要语句仍然为真,
while语句将发生多次。

如果您想创建一个无限循环,while循环就可以实现

var done=false;
while(!done){
    alert("I am annoying");
}

for
语句可以模拟一段时间:

for(var i=0; i<length; i++) {}

// is the same as

var i=0;
while(i<length) {
    // stuff
    i++;
}
或者其他东西:

while(a != b) {
    if(a > b) {
        a -= b;
    } else {
        b -= a;
    }
} // find the GCD of a and b

正如你所看到的,它与
if
非常不同,并且解决了其他问题。

我将尝试给你一个非常高层次的答案,因为我认为它更容易直观地理解

将所有算法都视为配方。一个典型的配方可能包含如下部分:

  • 如果花生有壳,就把它和壳分开
  • 把鸡蛋打至起泡
  • 取5个洋葱,每个切成两半
这些类型的指导让你以不同的方式完成任务

第一个是真正的“如果”语句。如果一个条件(花生有壳)是真的,你就做些什么。你确实做到了:

if (not shelled) {
  shell the peanut! // happens once
}
while(not whipped enough) {
  beat egg! // happens over and over
}
for (onions 1 to 5) {
  Chop an onion! // done 5 times total, once per onion
}

第二个是while循环。你在鸡蛋没有搅打和起泡的时候打它。你不停地反复(鞭打)做同样的事情,当你这样做的时候,你看着它(一遍又一遍),看看它是否变得非常起泡。一旦它有足够的泡沫和搅打,你就停止。当你停止它是因为你已经通过了你的“While”条件。需要注意的一件重要事情是,在你开始之前,你不一定知道一个鸡蛋需要多少“拍打”才能搅打它。你只需要做很多次,并且(用你的眼睛)检查很多次。你确实做到了:

if (not shelled) {
  shell the peanut! // happens once
}
while(not whipped enough) {
  beat egg! // happens over and over
}
for (onions 1 to 5) {
  Chop an onion! // done 5 times total, once per onion
}
就像在菜谱中一样,在时间结束之前,你不希望有人做某个动作,所以你必须始终确保你的while循环有合理的停止条件。大多数while循环依赖于循环内部的某些变化,并且在该变化足够大时将停止


第三个配方示例是for循环。对于你拥有的每一个洋葱,你对那一个洋葱做一次事情。你确实做到了:

if (not shelled) {
  shell the peanut! // happens once
}
while(not whipped enough) {
  beat egg! // happens over and over
}
for (onions 1 to 5) {
  Chop an onion! // done 5 times total, once per onion
}

我不知道一个
if
语句如何接近于取代
循环,老实说:?我的错,它似乎不存在于javascript中。哈哈,我一直在思考
for
循环。修正了我的措辞,但没有改变我的答案。+1是一个很好的例子,显示了三者之间的区别和正确用法。这确实帮助我想象while循环真正在做什么。谢谢