Control Flow

Tutorial 2 of 4

Introduction

In this tutorial, we will explore the concept of control flow in JavaScript. Control flow is a fundamental concept in any programming language, including JavaScript. It refers to the order in which the individual statements, instructions, or function calls of an imperative or a declarative program are executed or evaluated.

By the end of this tutorial, you will understand the different types of control flow statements in JavaScript, including conditional statements (like if, else, and switch) and loop statements (like for, while, and do-while). You will also learn how to use these statements to control the flow of your program.

Prerequisites: Before starting this tutorial, it is recommended that you have a basic understanding of JavaScript syntax.

Step-by-Step Guide

Control Flow Statements

JavaScript supports several types of control flow statements:

  1. Conditional Statements: These allow us to run different pieces of code based on certain conditions.
  2. if: An if statement will only run the code inside the statement if a certain condition is true.
  3. else: An else statement can be paired with an if statement, and will run if the condition in the if statement is false.
  4. else if: This can be used to chain multiple conditions.
  5. switch: A switch statement can be used to replace multiple if checks. It gives a more descriptive way to compare the expression with multiple variants.

  6. Loop Statements: These allow us to run a piece of code multiple times.

  7. for: A for loop repeats until a specified condition evaluates false.
  8. while: A while loop executes its statements as long as a specified condition evaluates to true.
  9. do-while: The do-while loop is similar to the while loop, but the loop will always be executed at least once, even if the condition is false, because the code block is run before the condition is tested.

Best Practices and Tips

  • Always use braces {} even for single statement code blocks in your if/else and loop statements. This makes your code more readable and maintainable.
  • Avoid using too many nested if/else statements (also known as "callback hell") as it makes the code hard to read and understand. You can use 'early return' or 'guard clauses' to keep your code flat.
  • Avoid 'infinite loops' where the loop never ends. Always ensure that the loop condition will eventually become false, otherwise, your program will become unresponsive.
  • When using a switch statement, always include a default case.

Code Examples

Let's look at some code examples.

  1. if/else Statement
let age = 16;
if (age >= 18) {
  console.log('You are an adult.');
} else {
  console.log('You are a minor.');
}

In this example, the if statement checks if the age is greater than or equal to 18. If it is, the message 'You are an adult.' is printed to the console. If not, the else statement runs, and 'You are a minor.' is printed.

  1. for Loop
for(let i = 0; i < 5; i++) {
  console.log(i);
}

In this example, the for loop starts with i equal to 0, continues as long as i is less than 5, and increments i by 1 after each loop iteration. Thus, it will print the numbers 0 through 4 to the console.

Summary

In this tutorial, we've covered the basics of control flow in JavaScript, including conditional statements and loop statements. We've also looked at some best practices and tips for using these statements effectively.

Next, you might want to delve deeper into JavaScript and explore more complex control flow scenarios, such as nested loops and conditions, as well as error handling with try/catch/finally statements.

Additional Resources:
1. Mozilla Developer Network - JavaScript Guide
2. W3Schools - JavaScript Tutorial

Practice Exercises

Exercise 1: Write a JavaScript program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".

Solution:

for(let i = 1; i <= 100; i++) {
  if (i % 3 === 0 && i % 5 === 0) {
    console.log('FizzBuzz');
  } else if (i % 3 === 0) {
    console.log('Fizz');
  } else if (i % 5 === 0) {
    console.log('Buzz');
  } else {
    console.log(i);
  }
}

In this solution, the for loop goes through the numbers 1 to 100. For each number, it checks if it's divisible by 3 and 5, 3 only, or 5 only, printing 'FizzBuzz', 'Fizz', or 'Buzz' respectively. If none of these conditions are met, it just prints the number.

Exercise 2: Write a JavaScript program to construct the following pattern, using a nested for loop.

*
* *
* * *
* * * *
* * * * *

Solution:

let pattern = '';
for(let i = 1; i <= 5; i++) {
  for(let j = 1; j <= i; j++) {
    pattern += '* ';
  }
  pattern += '\n';
}
console.log(pattern);

In this solution, the outer for loop runs 5 times, and for each iteration, the inner for loop runs i times, adding a '*' to the pattern for each iteration. A newline character \n is added after each outer loop iteration to create the new lines in the pattern.

Remember, practice is key when learning programming. Keep practicing and experimenting with different problems to strengthen your understanding of control flow in JavaScript.