Control Flow
If ... else
Classic flow control if statement
if (condition) {
statement1;
} else {
statement2;
}
Switch statement
Switch statements work in JavaScript like most other programming languages, but they should be avoided for readbility reasons.
switch (expression) {
case value1:
//Statements executed when the result of expression matches value1
break;
case value2:
//Statements executed when the result of expression matches value2
break;
...
case valueN:
//Statements executed when the result of expression matches valueN
break;
default:
//Statements executed when none of the values match the value of the expression
break;
}
An alternative is to use an object to execute based on values.
const conditions = {
first: () => doSomething(),
second: () => doSomething(),
third: () => doSomething(),
};
const output = conditions[value]();
Truthy
Truthy is a term in JavaScript to mean that a value evaluates to be a truth. So not just booleans can be true, but any value. For example the value 0 is false and anything other than 0 means true, or "hello" is true but "" is false.
A truthy evaluation can be converted to a boolean by doing a double negation.
!!"hello"
// equals true
The first negation !
converts the truthy into a boolean in its negative form. So the negation of "hello" is false. Then you apply a second negation !
to convert it to the actual boolean representation of true.
? Operator
The ?
can be used as a shorthand to do a assignment ternary.
const ageAccess = age > 18 ? "over 18" : "under 18";
age > 18
is evaluated and if the result is true then the first part after the ?
is returned and assigned to the ageAccess
variable, otherwise the second part is returned.
Exceptions
Exceptions in JavaScript are just objects that are returned.
You can use the build in Error
object or create a customer Error
object.
throw new Error("Exception message");
function CustomException(message) {
const error = new Error(message);
error.code = "THIS_IS_A_CUSTOM_ERROR_CODE";
return error;
}
throw new CustomException("Exception message");
Exceptions are caught by a try...catch
// Caught errors
try {
doSomething();
} catch (e) {
console.log("Something went wrong", e);
}
If you create multiple custom exception error objects then you can determine the type of error that has occurred by checking which instance the error is.
try {
willGiveErrorSometime();
} catch (error) {
if (error instanceof RangeError) {
rangeErrorHandler(error);
} else if (error instanceof ReferenceError) {
referenceErrorHandle(error);
} else {
errorHandler(error);
}
}