8. Control Structures
Conditional Statements
if Statement
let age = 18;
if (age >= 18) {
console.log("You can vote!");
}
if-else Statement
let temperature = 25;
if (temperature > 30) {
console.log("It's hot!");
} else {
console.log("It's not too hot.");
}
if-else if-else Statement
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");
}
Ternary Operator (Conditional Expression)
let age = 20;
let status = age >= 18 ? "Adult" : "Minor";
console.log(status); // "Adult"
Switch Statement
let day = 3;
let dayName;
switch (day) {
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
case 4:
dayName = "Thursday";
break;
case 5:
dayName = "Friday";
break;
case 6:
dayName = "Saturday";
break;
case 7:
dayName = "Sunday";
break;
default:
dayName = "Invalid day";
}
console.log(dayName); // "Wednesday"
Switch with Multiple Cases
let fruit = "apple";
switch (fruit) {
case "apple":
case "pear":
case "peach":
console.log("This is a pome fruit.");
break;
case "orange":
case "lemon":
case "lime":
console.log("This is a citrus fruit.");
break;
default:
console.log("Unknown fruit type.");
}
Loops
for Loop
// Basic for loop
for (let i = 0; i < 5; i++) {
console.log(i); // 0, 1, 2, 3, 4
}
// Iterating over array
let fruits = ["apple", "banana", "orange"];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
for...of Loop (ES6+)
let numbers = [1, 2, 3, 4, 5];
for (let number of numbers) {
console.log(number);
}
// Works with strings too
let text = "Hello";
for (let char of text) {
console.log(char);
}
for...in Loop
let person = {
name: "John",
age: 30,
city: "New York"
};
for (let key in person) {
console.log(`${key}: ${person[key]}`);
}
// Output:
// name: John
// age: 30
// city: New York
while Loop
let count = 0;
while (count < 5) {
console.log(count);
count++;
}
do...while Loop
let i = 0;
do {
console.log(i);
i++;
} while (i < 5);
// The loop body executes at least once
let j = 10;
do {
console.log(j);
j++;
} while (j < 5); // Still prints 10
Loop Control Statements
break Statement
for (let i = 0; i < 10; i++) {
if (i === 5) {
break; // Exit the loop
}
console.log(i); // 0, 1, 2, 3, 4
}
continue Statement
for (let i = 0; i < 10; i++) {
if (i % 2 === 0) {
continue; // Skip even numbers
}
console.log(i); // 1, 3, 5, 7, 9
}
Labeled Statements
outerLoop: for (let i = 0; i < 3; i++) {
innerLoop: for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
break outerLoop; // Break out of both loops
}
console.log(`i: ${i}, j: ${j}`);
}
}
Error Handling
try...catch Statement
try {
let result = riskyOperation();
console.log("Success:", result);
} catch (error) {
console.log("Error occurred:", error.message);
} finally {
console.log("This always runs");
}
throw Statement
function divide(a, b) {
if (b === 0) {
throw new Error("Division by zero!");
}
return a / b;
}
try {
console.log(divide(10, 0));
} catch (error) {
console.log(error.message); // "Division by zero!"
}
Next Steps
Control structures allow you to control the flow of your programs. Next, let's explore functions, which are reusable blocks of code.