javascript简单的bmi计算器没有按预期工作

时间:2014-06-17 15:04:29

标签: javascript

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计算器。它计算你的bmi。但它在if / else部分有问题。它只显示&#34;你是正常的&#34;无论是什么bmi

2 个答案:

答案 0 :(得分:2)

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

您应该重命名以下功能之一:

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之后返回一个值,然后无关紧要。

答案 1 :(得分:0)

您声明了bmi函数表达式

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

但后来的声明后来完全覆盖了它。所以当你打电话时

bmi(userweight, userheight)

Javascript接受传入的userweight并将其分配给calc。 BMI根本没有计算,你的第一个函数从未被调用过。

永远不会使用userheight;如果传入太多参数,JavaScript并不在意。

为您的功能提供不同的名称,例如将你的第一个函数重命名为calculateBMI,将第二个函数重命名为advnOnBMI(或你想要的任何东西)并重新运行它。

调试时,console.log是您的朋友 - 使用它在您选择的浏览器中输出到Developer Console。