JavaScript Conditional Statements: A Detailed Guide

Explore JavaScript conditional statements with Edulane. From basics to advanced techniques, our guide covers if-else, switch, and ternary operators, complete with examples to help you make better coding decisions and enhance your web development skills.

Introduction

Conditional statements in JavaScript are used to perform different actions based on different conditions. This guide will take you through the basics to more complex forms of conditional statements, providing detailed explanations, examples, and best practices to help you write effective and readable code.

if Statement

The if statement is the simplest form of conditional statement in JavaScript. It allows you to execute a block of code only if a specified condition evaluates to true. If the condition is false, the block of code is skipped.

Syntax
if (condition) {
    // code to be executed if the condition is true
}
  • if: The keyword that starts the conditional statement.
  • (condition): A boolean expression or condition that is evaluated. If it evaluates to true, the code inside the curly braces {} is executed.
  • {}: Curly braces enclose the block of code to be executed if the condition is true.
Example
let age = 18;
if (age >= 18) {
    console.log("You are an adult.");
}
Output
You are an adult.

if…else Statement

The if...else statement extends the if statement to handle the case where the condition is false. It executes one block of code if the condition is true, and another block if the condition is false.

Syntax
if (condition) {
    // code to be executed if the condition is true
} else {
    // code to be executed if the condition is false
}
  • if: The keyword to start the conditional statement.
  • (condition): A boolean expression or condition that is evaluated.
  • {}: Curly braces enclose the block of code executed if the condition is true.
  • else: The keyword that starts the block of code executed if the condition is false.
Example
let age = 16;
if (age >= 18) {
    console.log("You are an adult.");
} else {
    console.log("You are a minor.");
}
Output
You are a minor.

if…else if…else Statement

The if...else if...else statement allows you to test multiple conditions sequentially. It executes the block of code corresponding to the first condition that evaluates to true. If none of the conditions are true, the code in the else block (if present) is executed

Syntax
if (condition1) {
    // code to be executed if condition1 is true
} else if (condition2) {
    // code to be executed if condition2 is true
} else {
    // code to be executed if both condition1 and condition2 are false
}
  • if: Starts the conditional statement.
  • (condition1): The first boolean expression or condition to test.
  • else if: Adds additional conditions to test if the previous condition(s) are false.
  • (condition2): The next boolean expression or condition to test.else: The block of code to execute if none of the previous conditions are true.
  • {}: Curly braces enclose the blocks of code for each condition.
Example
let age = 20;
if (age < 13) {
    console.log("You are a child.");
} else if (age < 20) {
    console.log("You are a teenager.");
} else {
    console.log("You are an adult.");
}
Output
You are an adult.

switch Statement

The switch statement evaluates an expression, compares its value to multiple case labels, and executes the block of code associated with the matching case. It provides a cleaner and more readable way to handle multiple conditions that compare the same variable.

Syntax
switch (expression) {
    case value1:
        // code to be executed if expression === value1
        break;
    case value2:
        // code to be executed if expression === value2
        break;
    // more cases as needed
    default:
        // code to be executed if expression doesn't match any case
}
  • switch: The keyword to start the switch statement.
  • (expression): An expression whose value is compared with case values.
  • case value1:: A label that defines a possible value for the expression. If expression === value1, the code following this case executes.
  • break;: Exits the switch statement. Without it, the execution will continue to the next case.
  • default:: Optional. Code to be executed if no case matches.
Example
let fruit = "apple";
switch (fruit) {
    case "banana":
        console.log("Banana is yellow.");
        break;
    case "apple":
        console.log("Apple is red.");
        break;
    case "grape":
        console.log("Grape is purple.");
        break;
    default:
        console.log("Unknown fruit.");
}
Output
Apple is red.

Ternary Operator

The ternary operator provides a shorthand way to write simple if...else statements. It is useful for assigning values based on a condition.

Syntax
condition ? expressionIfTrue : expressionIfFalse
  • condition: A boolean expression or condition to evaluate.
  • ?: Separates the condition from the expressions.
  • expressionIfTrue: The value or expression returned if the condition is true.
  • :: Separates the expressions for the true and false cases.
  • expressionIfFalse: The value or expression returned if the condition is false.
Example
let age = 22;
let isAdult = (age >= 18) ? "Yes" : "No";
console.log(isAdult);
Output
Yes

Nested Conditional Statements

Nested conditional statements are if, else if, or else statements inside another if, else if, or else statement. They are used to handle more complex decision-making scenarios where conditions are dependent on other conditions.

let score = 85;
if (score >= 90) {
    console.log("Grade: A");
} else {
    if (score >= 80) {
        console.log("Grade: B");
    } else {
        if (score >= 70) {
            console.log("Grade: C");
        } else {
            console.log("Grade: F");
        }
    }
}
Output
Grade: B

Best Practices

  1. Keep Conditions Simple: Ensure conditions are not overly complex for readability and maintenance.

// Bad
if (a && b || c && !d) {
    // code
}
// Good
if ((a && b) || (c && !d)) {
    // code
}
  1. Use Strict Equality (===): Always use === instead of == to avoid type coercion issues.

// Bad
if (age == "18") {
    // code
}
// Good
if (age === 18) {
    // code
}
  1. Avoid Deep Nesting: Too many nested conditions can make the code difficult to read and maintain.
// Bad
if (condition1) {
    if (condition2) {
        if (condition3) {
            // code
        }
    }
}
// Good
if (condition1 && condition2 && condition3) {
    // code
}
  1. Use Default Case in Switch Statements: Always include a default case to handle unexpected values.
// Good
switch (fruit) {
    case "banana":
        // code
        break;
    // other cases
    default:
        // code
}

Example Explanation with Output

let day = new Date().getDay();
let message = "";

switch (day) {
    case 0:
        message = "Today is Sunday";
        break;
    case 1:
        message = "Today is Monday";
        break;
    case 2:
        message = "Today is Tuesday";
        break;
    case 3:
        message = "Today is Wednesday";
        break;
    case 4:
        message = "Today is Thursday";
        break;
    case 5:
        message = "Today is Friday";
        break;
    case 6:
        message = "Today is Saturday";
        break;
    default:
        message = "Invalid day";
}

console.log(message);
Explanation
  1. let day = new Date().getDay();: This line gets the current day of the week as a number (0 for Sunday, 1 for Monday, etc.).
  2. switch (day) {...}: The switch statement evaluates the value of day.
  3. Cases: Each case corresponds to a day of the week. When the value of day matches a case, the code within that case runs.
  4. break: Each case ends with a break to prevent fall-through.
  5. default: If none of the cases match, the default code runs.
  6. console.log(message);: This line prints the appropriate message for the current day.
Output

The output will vary based on the current day of the week. For example, if today is Monday, the output will be:

Today is Monday

Interview Questions

What are conditional statements in JavaScript?

Answer: Conditional statements in JavaScript are used to execute different blocks of code based on specified conditions. They allow you to control the flow of your program by evaluating whether a condition is true or false.

2. Explain the if statement in JavaScript with an example.

Answer: The if statement executes a block of code if a specified condition is true.

Example:

let age = 25;
if (age >= 18) {
    console.log("You are an adult.");
}
3. Differentiate between if and if-else statements in JavaScript.

Answer:

  • if statement: Executes a block of code if a specified condition is true.
  • if-else statement: Executes one block of code if a condition is true and another block if it’s false.
4. How do you handle multiple conditions using the else if ladder in JavaScript?

Answer:

The else if ladder allows you to check multiple conditions sequentially and execute a block of code as soon as one of the conditions is true.

Example:

let score = 85;
if (score >= 90) {
    console.log("Grade: A");
} else if (score >= 80) {
    console.log("Grade: B");
} else if (score >= 70) {
    console.log("Grade: C");
} else {
    console.log("Grade: D");
}
5. How does the ternary operator (? :) work in JavaScript?

Answer:

The ternary operator provides a shorthand way to write if-else statements in a single line.

Example:

let age = 20;
let message = (age >= 18) ? "Adult" : "Minor";
console.log(message);  // Outputs: Adult
6. What is a switch statement in JavaScript and when would you use it?

Answer:

A switch statement evaluates an expression against multiple possible cases and executes the corresponding block of code based on a match. It’s useful when you have multiple conditions to evaluate against the same value.

Example:

let day = 3;
switch (day) {
    case 1:
        console.log("Monday");
        break;
    case 2:
        console.log("Tuesday");
        break;
    case 3:
        console.log("Wednesday");
        break;
    default:
        console.log("Unknown day");
}
7. How do you handle nested conditional statements in JavaScript?

Answer:

Nested conditional statements involve placing one conditional statement inside another. They are used to handle more complex conditions where multiple conditions need to be evaluated.

Example:

let age = 20;
if (age >= 18) {
    if (age < 21) {
        console.log("You are an adult, but not yet allowed to drink.");
    } else {
        console.log("You are allowed to drink.");
    }
} else {
    console.log("You are a minor.");
}
8.What are the best practices for writing conditional statements in JavaScript?

Answer:

  • Use meaningful variable and function names.
  • Properly indent and format your code for readability.
  • Avoid unnecessary nested conditions to simplify logic.
  • Use else if ladder or switch statements for multiple conditions based on the same variable.
9. How do you check if a variable is null or undefined in JavaScript?

Answer:

You can use conditional statements to check if a variable is null or undefined.

Example:

let value = null;
if (value === null) {
    console.log("The value is null.");
} else {
    console.log("The value is not null.");
}
10. Explain the concept of truthy and falsy values in JavaScript with an example.

Answer:

Truthy values are values that evaluate to true in a Boolean context, while falsy values evaluate to false. JavaScript has a set of falsy values (false, 0, '', null, undefined, and NaN).

Example:

let number = 0;
if (number) {
    console.log("Number is truthy.");
} else {
    console.log("Number is falsy.");
}
11. How can you simulate a logical AND (&&) using nested if statements?

Answer:

You can simulate a logical AND operation using nested if statements to check multiple conditions.

Example:

let age = 25;
let hasLicense = true;
if (age >= 18) {
    if (hasLicense) {
        console.log("You can drive.");
    } else {
        console.log("You need a license to drive.");
    }
} else {
    console.log("You are too young to drive.");
}
12. Write a JavaScript function to check if a number is even or odd using a ternary operator.

Answer:

function checkEvenOrOdd(num) {
    return (num % 2 === 0) ? "Even" : "Odd";
}

console.log(checkEvenOrOdd(5));  // Outputs: Odd
console.log(checkEvenOrOdd(8));  // Outputs: Even
13. How would you refactor nested if-else statements to improve code readability?

Answer:

Refactoring nested if-else statements involves breaking down complex conditions into smaller, more manageable parts using else if or switch statements.

Example:

let age = 20;
if (age < 18) {
    console.log("You are a minor.");
} else if (age < 21) {
    console.log("You are an adult, but not yet allowed to drink.");
} else {
    console.log("You are allowed to drink.");
}
14. Explain the importance of the default case in a switch statement.

Answer:

The default case in a switch statement executes when none of the other cases match the evaluated expression. It ensures that there’s a fallback option when no specific condition is met.

let dayOfWeek = "Sunday";
switch (dayOfWeek) {
    case "Monday":
    case "Wednesday":
    case "Friday":
        console.log("It's a weekday.");
        break;
    case "Saturday":
    case "Sunday":
        console.log("It's the weekend!");
        break;
    default:
        console.log("Invalid day of the week.");
}
15. How do you handle multiple conditions efficiently in JavaScript?

Answer:

You can handle multiple conditions efficiently using else if ladder or switch statements based on the nature of the conditions and the variable being evaluated.

16. Write a JavaScript function to convert a numerical grade into a letter grade using a switch statement.

Answer:

function convertToLetterGrade(score) {
    let grade;
    switch (true) {
        case score >= 90:
            grade = 'A';
            break;
        case score >= 80:
            grade = 'B';
            break;
        case score >= 70:
            grade = 'C';
            break;
        case score >= 60:
            grade = 'D';
            break;
        default:
            grade = 'F';
    }
    return grade;
}

console.log(convertToLetterGrade(85));  // Outputs: B
console.log(convertToLetterGrade(60));  // Outputs: D
17. How can you combine multiple conditions in a single if statement using logical operators?

Answer:
You can use logical operators (&&, ||, !) to combine multiple conditions in a single if statement to create more complex conditional logic.

Example:

let age = 20;
let hasLicense = true;
if (age >= 18 && hasLicense) {
    console.log("You can drive.");
} else {
    console.log("You are not eligible to drive.");
}
18. What are some common pitfalls to avoid when using conditional statements in JavaScript?

Answer:

  • Forgetting to handle all possible cases in switch statements by including a default case.
  • Overly nested if-else structures that can lead to code that is hard to read and maintain.
  • Not properly initializing variables used in conditional checks, leading to unexpected behavior.
19. How can you ensure code maintainability when using conditional statements?

Answer: To ensure code maintainability:

  • Use meaningful variable and function names.
  • Properly comment your code to explain the logic behind conditional statements.
  • Refactor complex conditions into smaller, modular functions when possible.
20. Write a JavaScript function to check if a year is a leap year using conditional statements.

Answer:

function isLeapYear(year) {
    if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
        return true;
    } else {
        return false;
    }
}

console.log(isLeapYear(2020));  // Outputs: true
console.log(isLeapYear(2021));  // Outputs: false

These interview questions and answers cover various aspects of JavaScript conditional statements, providing a comprehensive understanding suitable for interview preparation.