JavaScript do-while loop

JavaScript: do-while Loop

In JavaScript, the do-while loop is a powerful tool for running a block of code repeatedly based on a condition. What makes it different from the regular while loop is that the code inside the do block is always executed at least once, regardless of whether the condition is true or not.

Key Points:

  • Primary use: The do-while loop ensures that the code runs at least once before checking the condition to decide whether to repeat the loop.
  • How it works: After the first execution, the loop continues running as long as the condition remains true.

In this article, we’ll explore how the do-while loop works, see examples, and understand how to use it effectively in JavaScript to repeat tasks.

Basic Syntax of the do-while Loop

The do-while loop in JavaScript follows this simple structure:

do {
  // Code to execute
} while (condition);

This block contains the code that will run at least once before checking any condition. The code inside this block is always executed before the loop condition is evaluated.

After executing the code in the do block, the while condition is checked. If the condition is true, the loop will repeat, running the code inside the do block again. If the condition is false, the loop stops, and the program continues executing the code that comes after the do-while loop.

Unlike the while loop, the do-while loop guarantees that the code inside the do block runs at least once, even if the condition is false from the start.

Simple Example of a do-while Loop

Let’s take a simple example where we print numbers from 1 to 5 using a do-while loop:

let i = 1;

do {

  console.log(i);
  i++;

} while (i <= 5);
// Output: 1, 2, 3, 4, 5

The do block runs immediately, printing 1 even though the condition i <= 5 hasn’t been checked yet. After the first iteration, i is incremented to 2. The condition i <= 5 is then checked. Since it is true, the loop continues. This process repeats, printing numbers 2, 3, 4, and 5. After printing 5, i becomes 6. The condition i <= 5 is now false, so the loop stops.

The do-while loop ensures the code runs at least once, regardless of the condition. After that, the condition is checked, and the loop continues as long as the condition remains true.

Difference Between do-while and while Loop

The main difference between the do-while and while loops is in how they handle the condition check.

do-while Loop: The code inside the loop is always executed at least once, even if the condition is false at the beginning. The condition is checked after the code runs.

let i = 1;

do {

  console.log(i);
  i++;

} while (i <= 5);
// Output: 1, 2, 3, 4, 5

The while loop checks the condition first. The do-while loop checks the condition after executing the code.

while Loop: The condition is checked before the code is executed. If the condition is false initially, the loop won’t run at all.

let i = 1;

while (i <= 5) {

  console.log(i);
  i++;

}
// Output: 1, 2, 3, 4, 5

The while loop checks the condition before executing, so if i starts greater than 5, it won’t run at all. The do-while loop runs once, even if the condition is false.

Where is do-while Useful?

If you want a loop to always run at least once (e.g., prompting the user for input until they provide a valid response), a do-while loop is more appropriate because the loop body executes first, then the condition is checked.

Using do-while with User Input

One common use of the do-while loop is to repeatedly prompt the user for input until they meet a specific condition. This ensures that the task (in this case, asking for input) happens at least once before checking the condition.

let userInput = "";

do {
  userInput = prompt("Type 'exit' to stop");
  console.log("You typed: " + userInput);
} while (userInput !== "exit");

The loop runs at least once, even if the user hasn’t entered anything yet. This is because the do block executes first before checking the condition. Inside the loop, the prompt() method asks the user to type something. The loop continues until the user types “exit”. Once the user types “exit”, the condition (userInput !== "exit") becomes false, and the loop stops.

This pattern is perfect for scenarios where you need to ensure the user has an opportunity to perform an action (like providing input), no matter what. For example, if you were asking for a password or confirmation, the loop would keep asking the user until they provide the correct response or choose to exit.

When you need to ensure the task is performed at least once and then repeated based on user input, do-while loops are a good fit, as they guarantee the loop body runs at least once before the condition is evaluated.

Using do-while for Repeating Tasks

The do-while loop is great for repeating tasks, especially when you need the action to occur at least once, regardless of the condition. This is useful for retrying a task, like displaying a message or trying an action a fixed number of times.

let attempt = 1;

do {

  console.log("Attempt " + attempt);
  attempt++;

} while (attempt <= 3);
// Output: Attempt 1, Attempt 2, Attempt 3

The loop starts by running the block at least once, printing “Attempt 1” on the first iteration. On each iteration, the loop prints a message, and the counter attempt is incremented. The loop continues as long as attempt <= 3. Once attempt becomes 4, the condition is no longer true, and the loop stops.

If you have a task that needs to be attempted at least once (e.g., trying to connect to a server, displaying a message, or retrying an operation), a do-while loop ensures that the code runs before checking any conditions.

If you are retrying an action like a network request or a form submission, do-while guarantees that the action occurs at least once before validating the condition to decide whether to retry or stop.

In this way, the do-while loop is a helpful structure for tasks that need to be repeated, with the flexibility of executing the block of code a minimum of one time.

Skipping Iterations with continue in do-while

In a do-while loop, you can use the continue statement to skip the current iteration and move directly to the next one. This is particularly useful when you want to avoid executing the rest of the loop body for certain conditions without breaking the entire loop.

let i = 1;

do {

  i++;

  if (i % 2 === 0) continue;  // Skip even numbers

  console.log(i);  // Output: 1, 3, 5, 7, 9

} while (i < 10);

The loop starts with i = 1. On each iteration, i is incremented by 1. If i is even (i.e., i % 2 === 0), the continue statement skips the current iteration, meaning the console.log(i) does not run for even numbers. Only odd numbers are logged to the console, resulting in the output: 1, 3, 5, 7, 9.

The continue statement allows you to avoid running unnecessary code for certain conditions without having to wrap it in if statements. It’s helpful when you want to skip specific tasks or actions for certain values (like odd/even, specific inputs, etc.) but still keep the loop running.

In this example, using continue makes the loop more efficient by skipping over even numbers while still maintaining the overall structure of the loop.

Breaking Out of a do-while Loop Early with break

The break statement allows you to exit a loop before it completes its normal execution. This can be very useful when you want to stop the loop early under certain conditions, even if the loop’s condition hasn’t yet become false.

let i = 1;

do {

  if (i === 4) break;  // Stop when i reaches 4

  console.log(i);

  i++;

} while (i <= 5);
// Output: 1, 2, 3

The loop starts with i = 1. On each iteration, the loop checks if i === 4. When i reaches 4, the if (i === 4) condition is met, and the break statement is executed, immediately stopping the loop. The loop prints 1, 2, 3 and then stops, because the break prevented the loop from continuing after i became 4.

If you know that continuing the loop is unnecessary (for example, if you’ve already found what you’re looking for), you can use break to exit the loop early and save processing time. break allows you to stop the loop before it runs its full course, which is helpful in scenarios like searching for a specific item in a list.

In this example, the loop stops as soon as i reaches 4, even though the loop was originally set to run until i exceeds 5. This gives you more control over the loop’s execution.

Using do-while for Conditional Repeating with Dynamic Logic

The do-while loop is great for repeating tasks with dynamic conditions that change as the loop progresses. You can easily adjust how the loop behaves by modifying variables inside the loop block, making it ideal for situations where the condition depends on a changing value.

let i = 0;

do {

  console.log(i);
  i += 2;

} while (i < 20);
// Output: 0, 2, 4, 6, 8, 10, 12, 14, 16, 18

The loop starts with i = 0. On each iteration, i is incremented by 2, and the loop checks if i is less than 20. As long as this condition is true, the loop will continue. Instead of a fixed increment, the loop dynamically changes i by adding 2 after each iteration. The loop prints the numbers 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, incrementing by 2 each time until i reaches 20, at which point the loop stops.

This pattern is useful when the condition is based on a variable that changes over time, like counters or user input. The do-while loop allows you to easily adjust the logic inside the loop to control the flow, such as changing how the loop progresses or the condition under which it stops.

In scenarios where the loop needs to adjust its behavior (like incrementing or modifying the loop variable), the do-while loop offers a simple and efficient way to repeat tasks with dynamic logic.

When to Use do-while Loop

The do-while loop is unique in that it ensures a block of code is executed at least once, regardless of the condition. This makes it especially useful in scenarios where you want to perform a task and then check if it should be repeated. Here are some key situations where a do-while loop is a great choice:

When You Need to Execute Code at Least Once

The do-while loop is ideal when you need to perform a task at least once, regardless of the condition that follows. The loop’s structure guarantees that the code inside the loop will run once before the condition is checked.

let userResponse;

do {

  userResponse = prompt("Enter your name: ");
  console.log("Hello, " + userResponse);

} while (!userResponse); // Keep asking until user provides a response

In this case, the prompt will appear at least once, even if the user immediately clicks “Cancel” or provides an empty response.

Scenarios Involving User Interaction or Retrying

When you need to ask the user for input repeatedly until a specific condition is met (like a valid response), a do-while loop is perfect. The loop can ensure that the user is prompted to retry as many times as necessary.

let password;

do {

  password = prompt("Enter your password: ");
  console.log("Password entered: " + password);

} while (password !== "secret123");

Here, the user will be asked for a password at least once and kept in the loop until they enter the correct password.

Repeated Actions with Changing Conditions

The do-while loop is helpful when you need to perform a series of actions that may change the loop’s condition with each iteration. It ensures the action happens first and checks the condition afterward, making it useful for scenarios like repeated tasks or calculations that modify the loop’s logic.

let attempts = 1;
let guessedNumber;

do {

  guessedNumber = prompt("Guess the number between 1 and 10: ");

  if (guessedNumber == 7) {
    console.log("Correct! You guessed the number.");
  } else {
    console.log("Try again!");
  }

  attempts++;

} while (guessedNumber != 7 && attempts < 3);

In this scenario, the user is allowed to guess at least once, and the loop repeats until the correct guess is made, or they run out of attempts.

When You Need a Task to Be Repeated with Changing Logic

Sometimes, you need to ensure that certain steps in a process are performed multiple times, but the logic for each step changes. A do-while loop is great when the loop body modifies its internal logic (like incrementing values or changing user inputs) before checking the condition to continue.

let i = 0;

do {

  console.log(i);
  i += 5; // Increase by 5 on each iteration

} while (i < 50);

Here, the loop runs, starting from i = 0 and increasing by 5 until i reaches 50.

Use do-while when you need to guarantee that a block of code runs at least once, no matter the condition. Perfect for scenarios where repeated user input is required until the correct value is given. Ideal when the loop’s behavior changes dynamically based on actions within the loop itself.

The do-while loop is a versatile and useful tool in JavaScript for scenarios where the condition for continuation may depend on actions performed inside the loop.

Conclusion

To wrap up, the do-while loop is a powerful tool in JavaScript for situations where you need to ensure that a block of code is executed at least once before checking the continuation condition. This makes it particularly useful in scenarios involving user input, retries, or tasks that must happen once before any conditions are checked.

Remember, you can get creative by experimenting with dynamic conditions, changing values inside the loop, and combining the do-while loop with control statements like break and continue to manage the flow of your loop more effectively.

In conclusion, the do-while loop is perfect when you need to guarantee at least one execution of your code, and it offers flexibility for scenarios that require repeated actions based on changing conditions.

Scroll to Top