
Understanding Control Flow in JavaScript
Learn the essentials of control flow in JavaScript, including conditional statements like if-else and switch, as well as exception handling with throw, try/catch, and error objects.

Control flow in JavaScript determines the order in which statements are executed in your code. By mastering control flow, you can write efficient programs that make decisions, handle exceptions, and manage errors gracefully. This guide will dive deep into conditional statements and exception handling in JavaScript.
1. Conditional Statements
Conditional statements are used to perform different actions based on different conditions. JavaScript provides two main ways to handle conditional logic: if-else
and switch
.
1.1 if-else
Statement
The if-else
statement executes a block of code if a specified condition evaluates to true. If the condition is false, another block of code can be executed.
Syntax:
if (condition) {
// block of code to be executed if the condition is true
} else {
// block of code to be executed if the condition is false
}
Example:
let age = 18;
if (age >= 18) {
console.log('You are eligible to vote.');
} else {
console.log('You are not eligible to vote.');
}
// Output: You are eligible to vote.
You can also chain multiple conditions using else if
:
let score = 75;
if (score >= 90) {
console.log('Grade: A');
} else if (score >= 75) {
console.log('Grade: B');
} else {
console.log('Grade: C');
}
// Output: Grade: B
1.2 switch
Statement
The switch
statement is used to evaluate an expression against multiple possible values. It’s useful when you need to compare one variable with many options.
Syntax:
switch (expression) {
case value1:
// block of code to be executed if expression equals value1
break;
case value2:
// block of code to be executed if expression equals value2
break;
default:
// block of code to be executed if no cases match
}
Example:
let day = 'Monday';
switch (day) {
case 'Monday':
console.log('Start of the week!');
break;
case 'Wednesday':
console.log('Midweek!');
break;
case 'Friday':
console.log('Weekend is near!');
break;
default:
console.log('It’s just another day.');
}
// Output: Start of the week!
2. Exception Handling
Exception handling allows you to catch and respond to runtime errors, ensuring your program can handle unexpected situations gracefully. In JavaScript, exception handling is done using the throw
statement and try/catch/finally
blocks.
2.1 throw
Statement
The throw
statement allows you to create and raise custom errors intentionally. This can be useful when you want to stop the program if something unexpected happens.
Syntax:
throw new Error('Something went wrong!');
Example:
let age = 15;
if (age < 18) {
throw new Error('You must be 18 or older to vote.');
}
// This will terminate the program and display an error message
2.2 try/catch/finally
Statement
The try/catch
block is used to handle errors in a more controlled way. The code inside the try
block is executed, and if any error occurs, it’s caught and handled by the catch
block. The finally
block (optional) executes code after the try
and catch
, regardless of the outcome.
Syntax:
try {
// code that may throw an error
} catch (error) {
// code to handle the error
} finally {
// code to be executed regardless of the try/catch result
}
Example:
try {
let result = 10 / 0;
console.log(result); // Output: Infinity
} catch (error) {
console.log('An error occurred:', error.message);
} finally {
console.log('Execution finished.');
}
// Output:
// Infinity
// Execution finished.
In this example, the finally
block runs no matter what happens inside the try
block.
2.3 Error Objects
JavaScript has built-in error objects that provide more information when an error occurs. Some common error objects are:
Error
: The generic error object.TypeError
: Occurs when a variable or parameter is not of the expected type.ReferenceError
: Happens when referencing a variable that is not declared.SyntaxError
: Raised when there’s a syntax mistake in your code.RangeError
: Triggered when a value is not within the expected range.
Example:
try {
let person;
console.log(person.name); // This will throw a TypeError
} catch (error) {
console.log(error.name); // Output: TypeError
console.log(error.message); // Output: Cannot read property 'name' of undefined
}
Conclusion
Understanding control flow is essential for writing clear, predictable, and error-resistant code. By mastering conditional statements like if-else
and switch
, as well as exception handling using try/catch
and throw
, you can control how your programs behave under various conditions and ensure they handle errors gracefully.
If you’re looking to build more robust and scalable applications, don’t overlook the importance of mastering control flow in JavaScript.