JavaScript BMI计算函数在BMI>25时输出错误,求排查原因
你的BMI计算函数问题分析与修复方案
你的问题根源在条件判断的顺序、区间逻辑错误,还有一处拼写小问题:
- 条件顺序逻辑错误:当BMI超过25时,
bmi > 18.6会先被匹配(25必然大于18.6),代码直接执行“正常体重”分支,根本不会走到超重的判断逻辑。 - 区间定义错误:正常BMI范围是
18.5 ≤ BMI ≤ 25,你用bmi >18.6不仅漏掉了18.5-18.6之间的数值,还没包含25这个临界值。 - 拼写错误:
overweigh应为overweight。
修复后的代码(方案一:从低到高判断)
let calculateWeight = parseFloat(prompt("Enter your weight")) let calculateHeight = parseFloat(prompt("Enter your height")) function calculateBmi(weight, height) { let bmi = weight / (height * height) if (bmi < 18.5) { console.log("You are underweight") } else if (bmi <= 25) { // 准确覆盖18.5到25的正常区间 console.log("You are normal weight") } else { // 剩余所有情况都是BMI>25的超重状态 console.log("You are overweight") } return bmi; } console.log(calculateBmi(calculateWeight, calculateHeight))
修复后的代码(方案二:从高到低判断,逻辑更直观)
let calculateWeight = parseFloat(prompt("Enter your weight")) let calculateHeight = parseFloat(prompt("Enter your height")) function calculateBmi(weight, height) { let bmi = weight / (height * height) if (bmi > 25) { console.log("You are overweight") } else if (bmi >= 18.5) { console.log("You are normal weight") } else { console.log("You are underweight") } return bmi; } console.log(calculateBmi(calculateWeight, calculateHeight))
调整后,当BMI超过25时会优先触发超重判断,同时准确覆盖所有区间的边界值,不会再出现逻辑错误。
内容的提问来源于stack exchange,提问作者Mairuu
相关产品推荐
相关产品推荐

