Conditionals and Logic
Guard Returns
Exit a function early when a condition fails.
guard-return
A guard return handles an exceptional or empty case first. The rest of the function can then read like the normal path.
Guard Returns
guard_return.js
Replay: real traced execution (multi-file project)
const quantity = 2;
function describeOrder(count) {
if (count <= 0) {
return "empty";
}
return "items=" + count;
}
const summary = describeOrder(quantity);
console.log("quantity=" + quantity);
console.log("summary=" + summary);
const quantity = 0;
function describeOrder(count) {
if (count <= 0) {
return "empty";
}
return "items=" + count;
}
const summary = describeOrder(quantity);
console.log("quantity=" + quantity);
console.log("summary=" + summary);
const quantity = 5;
function describeOrder(count) {
if (count <= 0) {
return "empty";
}
return "items=" + count;
}
const summary = describeOrder(quantity);
console.log("quantity=" + quantity);
console.log("summary=" + summary);
quantity ← 2
1const quantity→ 2 = 2; //@quantity=0, 52function describeOrder(count) {3 if (count <= 0) {4 return "empty";5 }6 return "items=" + count;7}8const summary = describeOrder(quantity2);//@quantity=0, 5 function describeOrder(count)
1const quantity = 2; //@quantity=0, 52function describeOrder(count2) {3 if (count <= 0) {4 return "empty";5 }6 return "items=" + count2;7}summary ← items=2
6 return "items=" + count;7}8const summary→ items=2 = describeOrder(quantity2);910console.log("quantity=" + quantity2);11console.log("summary=" + summaryitems=2);outputquantity=2 summary=items=2
quantity ← 0
1const quantity→ 0 = 0;2function describeOrder(count) {3 if (count <= 0) {4 return "empty";5 }6 return "items=" + count;7}8const summary = describeOrder(quantity0);function describeOrder(count)
1const quantity = 0;2function describeOrder(count0) {3 if (count <= 0) {if (count <= 0)
1const quantity = 0;2function describeOrder(count) {3 if (count0 <= 0) {4 return "empty";5 }summary ← empty
6 return "items=" + count;7}8const summary→ empty = describeOrder(quantity0);910console.log("quantity=" + quantity0);11console.log("summary=" + summaryempty);outputquantity=0 summary=empty
quantity ← 5
1const quantity→ 5 = 5;2function describeOrder(count) {3 if (count <= 0) {4 return "empty";5 }6 return "items=" + count;7}8const summary = describeOrder(quantity5);function describeOrder(count)
1const quantity = 5;2function describeOrder(count5) {3 if (count <= 0) {4 return "empty";5 }6 return "items=" + count5;7}summary ← items=5
6 return "items=" + count;7}8const summary→ items=5 = describeOrder(quantity5);910console.log("quantity=" + quantity5);11console.log("summary=" + summaryitems=5);outputquantity=5 summary=items=5