# How to avoid else statement in your codebase? 👉 Guard Clauses
- Concept of Guard Clauses is trying to avoid nested if structure in your code
Code Example:
// Basic version
function canDrink(person) {
if (person?.age !== null) {
if(person.age < 18) {
console.log("Nope 👶");
} else if (person.age < 21) {
console.log("Still growing 🎏");
} else {
console.log("Yes 🍻");
}
} else {
console.log("Not a person ...");
}
}
// Concept of Guard Clauses in JavaScript
// reference: https://learningactors.com/javascript-guard-clauses-how-you-can-refactor-conditional-logic/
// Better version
function canDrinkBetter(person) {
if (!person?.age) return console.log("Not a person ...");
if (person?.age < 18) return console.log("Nope 👶");
if (person?.age < 21) return console.log("Still growing 🎏");
if (person?.age >= 21) return console.log("Yes 🍻");
} // called guard clause !!!
// Pro version
function canDrinkPro(person) {
if (person?.age === null) return console.log("Not a person ...");
return checkPersonAge(person.age);
}
function checkPersonAge(age) {
if (age < 18) return console.log("Nope 👶");
if (age < 21) return console.log("Still growing 🎏");
return console.log("Yes 🍻");
}
const p = {
age: 19,
}
// canDrink(p);
// canDrinkBetter(p);
canDrinkPro(p);
Reference: here