beginner javascript programmer here, I was wondering which code is considered better to write:
the two ways I wrote are inside the code block, if there is a better way to write this code please lmk.
const mark = {
fullName: "Mark Miller",
mass: 78,
height: 1.69,
calcBMI: function () {
return (this.bmi = this.mass / this.height ** 2);
},
};
const john = {
fullName: "John Smith",
mass: 92,
height: 1.95,
calcBMI: function () {
return (this.bmi = this.mass / this.height ** 2);
},
};
// 1st WAY -------------------------------
const higherBMI =
mark.calcBMI() > john.calcBMI()
? `${mark.fullName}'s BMI (${mark.calcBMI()}) is higher than ${
john.fullName
}'s (${john.calcBMI()})!`
: `${john.fullName}'s BMI (${john.calcBMI()}) is higher than ${
mark.fullName
}'s (${mark.calcBMI()})!`;
console.log(higherBMI);
// 2nd WAY -----------------------
mark.calcBMI();
john.calcBMI();
if (mark.bmi > john.bmi) {
console.log(
`${mark.fullName}'s BMI (${mark.calcBMI()}) is higher than ${
john.fullName
}'s (${john.calcBMI()})!`
);
} else {
console.log(
`${john.fullName}'s BMI (${john.calcBMI()}) is higher than ${
mark.fullName
}'s (${mark.calcBMI()})!`
);
}
You should calculate BMI only once and store the result instead of calculating it every time you need it, and calcBMI() shouldn't return anything
mark.calcBMI();
john.calcBMI();
if (mark.bmi > john.bmi) {
console.log(
`${mark.fullName}'s BMI (${mark.bmi}) is higher than ${
john.fullName
}'s (${john.bmi})!`
);
} else {
console.log(
`${john.fullName}'s BMI (${john.bmi}) is higher than ${
mark.fullName
}'s (${mark.bmi})!`
);
}
Other valid solution is
mark.calcBMI();
john.calcBMI();
const higher = mark.bmi > john.bmi ? mark : john;
const lower = mark.bmi > john.bmi ? mark : john;
console.log(
`${higher.fullName}'s BMI (${higher.bmi}) is higher than ${lower.fullName}'s (${lower.bmi})!`
);
PS: your assume that both bmi values are different