While Loops vs. For Loops in JavaScript? [closed]

2020-05-18 07:38发布

What are the benefits of using a while loop over a for loop? When I'm iterating through arrays, I always use a for loop so I wondered if I'm missing something here.

I've never had a situation where a for loop doesn't do the job, but I'm worried that I may be picking up bad habits here. My usage of loops has been with regards to elements on web pages, stuff in animations, etc..

3条回答
乱世女痞
2楼-- · 2020-05-18 08:01

Functionally, one can substitute the other in all conditions. Is one better than the other? Not in javascript (which you have tagged) as its not a compiled language.

But in languages like C++, a for loop usually gives the compiler a static count to loop which the compiler can use to optimize the binary. So it should run faster (on very large loop counts).

That should not be a worry in today's age where you won't even notice the performance increase on a loop running for 10000 iterations on a 2.5 ghz quad core CPU.

However, personally, aesthetics matter to me (and it should to you if you are serious about the art of coding) a lot. For example when you are dealing with an external condition (the variable you are checking is defined outside the loop), go with a while loop. Its just semantically so much beautiful. Also while loop should be the de-facto choice for an infinite loop (I don't see a reason why you would have an infinite loop in javascript, though).

In short, follow the syntax. Are you just checking a condition? Go with a while loop. Are you initializing and incrementing/decrementing something with in the context of a loop along with checking a condition? Only then go with the for loop.

查看更多
forever°为你锁心
3楼-- · 2020-05-18 08:03

You can always use either of the loops. But, the most common usage of for loops is when the number of iterations are known, and the while loop having uncertain number of iterations or would depend upon a particular condition. For example:

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";
}
查看更多
来,给爷笑一个
4楼-- · 2020-05-18 08:09

These are the reasons I would choose one over the other:

For-loop Syntax:

for( int i = 0; i > 10; i++)
{
    //Some code here
}

I would use a for loop for the reason that I may KNOW the NUMBER OF ITERATIONS I need to do and I have an INCREMENTING variable which can be handy sometimes.

While-loop Syntax:

while(!done)
{
    //Some code goes here
}

I would use this loop when I am NOT SURE how many ITERATIONS I might need to carry out. Examples: Waiting for user to input correct input values and keep looping until he/she inputs the proper value.

Do-While loop Syntax:

do
{
    //Some code here
}
while(!done);

This loop is almost the same as a while-loop but I would prefer this when I need something done ATLEAST ONCE before I start verifying whatever it is that would make me wanna loop and do that code again. Example: ask a user for an input for the first time and then validate it. If wrong input given then loop back and ask for input again

查看更多
登录 后发表回答