简单的Javascript bmi计算器不工作的预期

javascript simple bmi calculator doesnt work as intended

本文关键字:工作 计算器 Javascript bmi 简单      更新时间:2023-09-26
var userweight = prompt ("What is your weight?");
var userheight = prompt ("What is your height in meter?");
var bmi = function (userweight,userheight){
  return userweight/(userheight*userheight);
};
var bmi= function(calc){
    if(calc<=18.4){
        return("you are thin");
    }
    else if  (18.5<=calc<=24.9){
        return("you are normal");
    }
     else if  (25.0<=calc<=29.9){
    return("you are fat");
}
else if (calc>=30.0){
    return("you have obesity");
}
};
bmi(userweight,userheight);

我试着做一个bmi计算器。它会计算你的体重指数。但是它在if/else部分有问题。它只显示"你是正常的"不管bmi是多少

首先,用if/else语句覆盖第一个bmi -formula函数赋值。

你应该重命名其中一个函数:

var userweight = prompt("What is your weight?");
var userheight = prompt("What is your height in meter?");
var formula = function(userweight,userheight){
  return userweight / (userheight * userheight);
};
var bmi = function(userweight, userheight){
  var calc = formula(userweight, userheight);
  if (calc <= 18.4) {
    return "you are thin";
  }
  if (calc >= 18.5 && calc <= 24.9) {
    return "you are normal";
  }
  if (calc >= 25.0 && calc <= 29.9) {
    return "you are fat";
  }
  if (calc >= 30.0) {
    return "you have obesity";
  }
};
alert( bmi(userweight, userheight) );

第二件事是,你返回"正常"部分(18.5<=calc<=24.9)的条件是假的,你可以这样做:calc >= 18.5 && calc <= 24.9。(与"脂肪"部分相同)

最后一个注意事项,正如您所看到的,我已经删除了else关键字,因为我们在if之后返回一个值,所以接下来的值无关紧要。

声明bmi函数表达式

var bmi = function (userweight,userheight){
  return userweight/(userheight*userheight);
};

但是后面的声明完全覆盖了它。所以当你调用

bmi(userweight, userheight)

Javascript接受传入的userweight并将其分配给calc。BMI根本不被计算,你的第一个函数永远不会被调用。

userheight从未被使用;JavaScript不会在意你是否传入了太多的参数。

给你的函数不同的名称,例如重命名你的第一个函数为calculateBMI,第二个函数为adviseOnBMI(或任何你喜欢的),并重新运行它。

Console .log在调试时是你的朋友——使用它在你选择的浏览器中输出到开发者控制台。