-
Notifications
You must be signed in to change notification settings - Fork 8
2.12 Loops: while and for
We often have a need to perform similar actions many times in a row.
For example, when we need to output goods from a list one after another. Or just run the same code for each number from 1 to 10.
Loops are a way to repeat the same part of code multiple times.
The while
loop has the following syntax:
while (condition) {
// code
// so-called "loop body"
}
While the condition
is true
, the code
from the loop body is executed.
For instance, the loop below outputs i
while i < 3
:
let i = 0;
while (i < 3) { // shows 0, then 1, then 2
alert( i );
i++;
}
A single execution of the loop body is called an iteration. The loop in the example above makes three iterations.
If there were no i++
in the example above, the loop would repeat (in theory) forever. In practice, the browser provides ways to stop such loops, and for server-side JavaScript we can kill the process.
Any expression or a variable can be a loop condition, not just a comparison. They are evaluated and converted to boolean by while
.
For instance, the shorter way to write while (i != 0)
could be while (i)
:
let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
alert( i );
i--;
}
If the loop body has a single statement, we can omit the brackets {...}:
let i = 3;
while (i) alert(i--);
The condition check can be moved below the loop body using the do..while syntax:
do {
// loop body
} while (condition);
The loop will first execute the body, then check the condition and, while it’s truthy, execute it again and again.
For example:
let i = 0;
do {
alert( i );
i++;
} while (i < 3);
This form of syntax is rarely used except when you want the body of the loop to execute at least once regardless of the condition being truthy. Usually, the other form is preferred: while(...) {...}
.
The for
loop is the most often used one.
It looks like this:
for (begin; condition; step) {
// ... loop body ...
}
Let’s learn the meaning of these parts by example. The loop below runs alert(i)
for i
from 0
up to (but not including) 3
:
for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
alert(i);
}
Let’s examine the for
statement part by part: