Loops can execute a block of code a number of times.
JavaScript Loops
Loops are handy, if you want to run the same code over and over again, each time with a different value.
Often this is the case when working with arrays:
Instead of writing:
<!DOCTYPE html> <html> <body> <h2>JavaScript For Loop</h2> <p id="demo"></p> <script> const cars = ["BMW", "Volvo", "Saab", "Ford", "Fiat", "Audi"]; let text = ""; for (let i = 0; i < cars.length; i++) { text += cars[i] + "<br>"; } document.getElementById("demo").innerHTML = text; </script> </body> </html>
Result:
JavaScript For Loop
BMW
Volvo
Saab
Ford
Fiat
Audi
Different Kinds of Loops
JavaScript supports different kinds of loops:
for
– loops through a block of code a number of timesfor/in
– loops through the properties of an objectfor/of
– loops through the values of an iterable objectwhile
– loops through a block of code while a specified condition is truedo/while
– also loops through a block of code while a specified condition is true
The For Loop
The for
statement creates a loop with 3 optional expressions:for (expression 1; expression 2; expression 3) {
// code block to be executed
}
Expression 1 is executed (one time) before the execution of the code block.
Expression 2 defines the condition for executing the code block.
Expression 3 is executed (every time) after the code block has been executed.
Example
<!DOCTYPE html> <html> <body> <h2>JavaScript For Loop</h2> <p id="demo"></p> <script> let text = ""; for (let i = 0; i < 5; i++) { text += "The number is " + i + "<br>"; } document.getElementById("demo").innerHTML = text; </script> </body> </html>
Result:
JavaScript For Loop
The number is 0
The number is 1
The number is 2
The number is 3
The number is 4
From the example above, you can read:
Expression 1 sets a variable before the loop starts (let i = 0).
Expression 2 defines the condition for the loop to run (i must be less than 5).
Expression 3 increases a value (i++) each time the code block in the loop has been executed.
Expression 1
Normally you will use expression 1 to initialize the variable used in the loop (let i = 0).
This is not always the case, JavaScript doesn’t care. Expression 1 is optional.
You can initiate many values in expression 1 (separated by comma):
Example
<!DOCTYPE html> <html> <body> <h2>JavaScript For Loop</h2> <p id="demo"></p> <script> const cars = ["BMW", "Volvo", "Saab", "Ford"]; let i, len, text; for (i = 0, len = cars.length, text = ""; i < len; i++) { text += cars[i] + "<br>"; } document.getElementById("demo").innerHTML = text; </script> </body> </html>
Result:
JavaScript For Loop
BMW
Volvo
Saab
Ford
And you can omit expression 1 (like when your values are set before the loop starts):
Example
<!DOCTYPE html> <html> <body> <h2>JavaScript For Loop</h2> <p id="demo"></p> <script> const cars = ["BMW", "Volvo", "Saab", "Ford"]; let i = 2; let len = cars.length; let text = ""; for (; i < len; i++) { text += cars[i] + "<br>"; } document.getElementById("demo").innerHTML = text; </script> </body> </html>
Result:
JavaScript For Loop
Saab
Ford
Expression 2
Often expression 2 is used to evaluate the condition of the initial variable.
This is not always the case, JavaScript doesn’t care. Expression 2 is also optional.
If expression 2 returns true, the loop will start over again, if it returns false, the loop will end.
If you omit expression 2, you must provide a break inside the loop. Otherwise the loop will never end. This will crash your browser. Read about breaks in a later chapter of this tutorial.
Expression 3
Often expression 3 increments the value of the initial variable.
This is not always the case, JavaScript doesn’t care, and expression 3 is optional.
Expression 3 can do anything like negative increment (i–), positive increment (i = i + 15), or anything else.
Expression 3 can also be omitted (like when you increment your values inside the loop):
Example
<!DOCTYPE html> <html> <body> <h2>JavaScript For Loop</h2> <p id="demo"></p> <script> const cars = ["BMW", "Volvo", "Saab", "Ford"]; let i = 0; let len = cars.length; let text = ""; for (; i < len; ) { text += cars[i] + "<br>"; i++; } document.getElementById("demo").innerHTML = text; </script> </body> </html>
Result:
JavaScript For Loop
BMW
Volvo
Saab
Ford
Loop Scope
Using var
in a loop:
Example
<!DOCTYPE html> <html> <body> <h2>JavaScript let</h2> <p id="demo"></p> <script> var i = 5; for (var i = 0; i < 10; i++) { // some statements } document.getElementById("demo").innerHTML = i; </script> </body> </html>
Result:
JavaScript let
10
Using let
in a loop:
Example
<!DOCTYPE html> <html> <body> <h2>JavaScript let</h2> <p id="demo"></p> <script> let i = 5; for (let i = 0; i < 10; i++) { // some statements } document.getElementById("demo").innerHTML = i; </script> </body> </html>
Result:
JavaScript let
5
In the first example, using var
, the variable declared in the loop redeclares the variable outside the loop.
In the second example, using let
, the variable declared in the loop does not redeclare the variable outside the loop.
When let
is used to declare the i variable in a loop, the i variable will only be visible within the loop.