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
答案 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。