JavaScript

Conditionals

Comparisons

Comparisons using <, >, ==, ===, !=, !==, <=, and >= have been discussed a lot in the previous notes. Here's the summary.

Check out the complete reference here: JavaScript: Comparison


Conditional Statements

if
else if
else

When it's more like conditional inclusions and exclusions, use if system.

switch

When it's more like options, especially when there are many, use switch.


If and else

if (condition 1) {
code block 1;
} else if (condition 2) {
code block 2;
} else {
code block x;
}

It reads:

We can have more than have one else if.

Note that only exclusion from previous condition goes to the next. When a condition is met, its code block is run, then it exits.

Conditions can be as many as needed. But in the case there are a lot of conditions (especially options type), consider using switch instead of if that's more like a list than inclusion-exclusion conditions.

today = new Date();
time = today.getHours();

if (time < 12) {
    console.log("Good morning!");
} else if (time < 17) {
    console.log("Good afternoon!");
} else {
    console.log("Good evening!");
}

Switch

switch (variableName) {
case value1:
code block A;
break;
case value2:
code block B;
break;
case value3:
case value4:
code block C;
break;
default:
code block Z;
}

Switch statement

today = new Date();
month = today.getMonth();
monthName;

switch (month) {
    case 0:
        monthName = "January";
        break;
    case 1:
        monthName = "February";
        break;
    case 2:
        monthName = "March";
        break;
    case 3:
        monthName = "April";
        break;
    case 4:
        monthName = "May";
        break;
    case 5:
        monthName = "June";
        break;
    case 6:
        monthName = "July";
        break;
    case 7:
        monthName = "August";
        break;
    case 8:
        monthName = "September";
        break;
    case 9:
        monthName = "October";
        break;
    case 10:
        monthName = "November";
        break;
    case 11:
        monthName = "December";
}

dateName = `${today.getDate()} ${monthName} ${today.getFullYear()}`
console.log(`Today is ${dateName}.`);

Without break statement:

month = 1;
let correctMonth;
let forgetSomeBreaks;
let forgetAllBreaks;

switch (month) {
    case 0:
        correctMonth = "January";
        break;
    case 1:
        correctMonth = "February";
        break;
    case 2:
        correctMonth = "March";
        break;
    default:
        correctMonth = "December";
}

switch (month) {
    case 0:
        forgetSomeBreaks = "January";
    case 1:
        forgetSomeBreaks = "February";
    case 2:
        forgetSomeBreaks = "March";
        break;
    default:
        forgetSomeBreaks = "December";
}

switch (month) {
    case 0:
        forgetAllBreaks = "January";
    case 1:
        forgetAllBreaks = "February";
        case 2:
        forgetAllBreaks = "March";
    default:
        forgetAllBreaks = "December";
}

console.log("Correct month: " + correctMonth);
console.log("Forget some breaks: " + forgetSomeBreaks);
console.log("Forget all breaks: " + forgetAllBreaks);

/*
Correct month: January
Forget first break: February
Forget all breaks: December
*/

Switch range

When the case is in range format, set the switch's paranthesis value into true: switch (true) and range can be safely written in each case's parenthesis: case (varName <= 4).


Ternary

(condition) ? (if true, run this code) : (if false, run this code)

In ternary, we are giving 1 condition. If it's true, run the left side code. If it's false, run the right side code.

let greeting = (isBirthday) ? "Happy Birthday" : "Good morning";

Example: Select theme

<label for="theme">Select theme: </label>
<select id="theme">
    <option value="light">Light theme</option>
    <option value="dark">Dark theme</option>
</select>

<script>
    const userTheme = document.querySelector('#theme');
    const userHtml = document.querySelector('html');

    function update(bgColor, textColor) {
        userHtml.style.backgroundColor = bgColor;
        userHtml.style.color = textColor;
    }

    theme.addEventListener('change', () => ( userTheme.value === 'dark' ) ? update('black','white') : update('white','black'));
</script>