Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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..

like image 204
pjk_ok Avatar asked Oct 11 '16 01:10

pjk_ok


People also ask

What is the difference between for and while loop in JavaScript?

while — loops through a block of code once; then the condition is evaluated. If the condition is true, the statement is repeated as long as the specified condition is true. for — loops through a block of code until the counter reaches a specified number. for…in — loops through the properties of an object.

Which is more efficient for loop or while loop in JavaScript?

In theory the while loop is quicker because the for loop looks up the length attribute of foo every time though the loop, but in real-world use it's going to make an immeasurably small difference.

Which is better for loop or while loop?

Use a for loop when you know the loop should execute n times. Use a while loop for reading a file into a variable. Use a while loop when asking for user input. Use a while loop when the increment value is nonstandard.

Is while loop blocking in JavaScript?

The issue is that once you go into the spin wait in the while() loop, NO other Javascript can execute. So, the timer that wants to change the value of the done variable cannot execute. Thus, the while loop condition can never change and thus it is an infinite loop.


2 Answers

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

like image 80
Rezwan Azfar Haleem Avatar answered Oct 20 '22 04:10

Rezwan Azfar Haleem


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.

like image 26
Jay Avatar answered Oct 20 '22 03:10

Jay