BMI计算器函数if分支内容不输出问题求助
修复BMI计算器函数的问题
你的代码存在三个核心问题,逐个修正即可正常输出提示文本:
1. 提前return导致后续代码不执行
原函数在计算完BMI后立刻执行return,直接返回了BMI数值,后面的所有if分支代码根本不会被运行。需要把return语句移到所有判断逻辑之后。
2. 条件判断逻辑错误
第二个if的条件bmi > 18.5 && bmi === 24.9是错误的,这只会匹配BMI恰好等于24.9的情况,正确的正常体重区间应该是大于18.5且小于等于24.9,所以要改成bmi > 18.5 && bmi <= 24.9。
3. 分支内的字符串未返回
每个if分支里的提示字符串只是定义了但没有返回,需要在每个分支里添加return,或者用变量存储结果最后统一返回。
修正后的完整代码
function bmiCalculator(weight, height) { var bmi = weight / Math.pow(height, 2); bmi = Math.round(bmi * 10) / 10; // 保留一位小数 if (bmi <= 18.5) { return "Your BMI is " + bmi + ", so you are underweight."; } else if (bmi > 18.5 && bmi <= 24.9) { return "Your BMI is " + bmi + ", so you have a normal weight."; } else if (bmi > 24.9) { return "Your BMI is " + bmi + ", so you are overweight."; } }
额外优化建议
- 用
else if替代多个独立if,这样只要匹配到一个分支就会停止判断,提升效率。 - 可以给函数添加参数合法性检查,比如体重身高不能为负数或0,避免计算错误。
内容的提问来源于stack exchange,提问作者Isra G
相关产品推荐
相关产品推荐

