无法将数字分配给 if 语句中的变量 Javascript
can't assign number to a variable in an if statement Javascript
我正在用 Javacsript 编写一个函数,returns 有两个变量,Consume 和 Burn。这是函数:
function calories(goal, goalWeight, activityLevel, days, gender, age, height, weight){
var bmr=0;
var consume=0;
var burn=0;
if (gender==='F'){
bmr = 655 + (4.3*weight) + (4.7*height) - (4.7*age);
}
if (gender==='M'){
bmr = 66 + (6.3*weight) + (12.9*height) - (6.8*age);
}
if (activityLevel==='Inactive'){
consume=bmr+(0.2*bmr);
}
if (activityLevel==='Relatively Active'){
consume=bmr+(0.3*bmr);
}
if (activityLevel==='Very Active'){
consume=bmr+(0.4*bmr);
}
if (goal==='Lose'){
if((goalWeight/days)<=0.06){
consume=consume-200;
}
if((goalWeight/days)<=0.15){
consume=consume-100;
}
if (activityLevel==='Inactive'){
burn=250;
}
if (activityLevel==='Relatively Active'){
burn=150;
}
if (activityLevel==='Very Active'){
burn=100;
}
}
if(goal==='Gain'){
if((goalWeight/days)<=0.06){
consume=consume+200;
}
if((goalWeight/days)<=0.15){
consume=consume+100;
}
if (activityLevel==='Inactive'){
burn=200;
}
if (activityLevel==='Relatively Active'){
burn=100;
}
if (activityLevel==='Very Active'){
burn=100;
}
}
if(goal==='Maintain'){
burn=100;
}
consume=Math.round(consume);
window.alert(consume);
window.alert(burn);
return [consume,burn];
}
在 window 框中,函数 returns 每次消耗的正确值,但由于某种原因 burn 总是返回零。如果我没有在 if 语句之外声明它,它将返回为未定义。有什么原因我不能在 if 语句中为这个变量分配数字吗?我已经使用 window.alert() 来测试是否正在访问正确的 if 语句,并且每次都是 returns 我想要的,但是 burn 从未被赋值,我不知道为什么!感谢任何建议
编辑
感谢您到目前为止的回答。示例输入是:
var calories = calories(goal, healthyWeight, activityLevel, days, gender, age, height, weight);
其中:
goal = 'Lose'
healthyWeight = 128
activityLevel = 'Inactive'
days = 180
gender = 'M'
age = 20
height = 63
weight = 160
这个returns如预期消耗2101,returns燃烧0
目前我对返回值所做的一切是这样的:
window.alert(consume);
window.alert(burn);
测试它们是什么值,但是一旦函数正常工作,我将使用
var consume=calories.consume;
var burn=calories.burn;
document.getElementById("consume").innerHTML = consume;
document.getElementById("burn").innerHTML = burn;
在浏览器中显示它们的功能之外
return [consume,burn];
将完全按照您的要求执行,因此当您调用 calories(...)
函数然后访问结果时,您似乎做错了什么。
你应该这样做:
var result = calories(...);
console.log(result[0]); // consume value
console.log(result[1]); // burn value
可能主要原因是您的功能没有正确的输入。请提供示例输入。
你应该使用 if-else 语句,例如
if (gender==='F') {
bmr = 655 + (4.3*weight) + (4.7*height) - (4.7*age);
} else {
bmr = 66 + (6.3*weight) + (12.9*height) - (6.8*age);
}
或者 if-else if-else 结构,在 else 中带有警报 - 当您的输入与您的 ifs 不匹配时
if (gender==='F') {
bmr = 655 + (4.3*weight) + (4.7*height) - (4.7*age);
} else if (gender==='M' {
bmr = 66 + (6.3*weight) + (12.9*height) - (6.8*age);
} else {
window.alert('wrong gender: ' + gender);
}
我正在用 Javacsript 编写一个函数,returns 有两个变量,Consume 和 Burn。这是函数:
function calories(goal, goalWeight, activityLevel, days, gender, age, height, weight){
var bmr=0;
var consume=0;
var burn=0;
if (gender==='F'){
bmr = 655 + (4.3*weight) + (4.7*height) - (4.7*age);
}
if (gender==='M'){
bmr = 66 + (6.3*weight) + (12.9*height) - (6.8*age);
}
if (activityLevel==='Inactive'){
consume=bmr+(0.2*bmr);
}
if (activityLevel==='Relatively Active'){
consume=bmr+(0.3*bmr);
}
if (activityLevel==='Very Active'){
consume=bmr+(0.4*bmr);
}
if (goal==='Lose'){
if((goalWeight/days)<=0.06){
consume=consume-200;
}
if((goalWeight/days)<=0.15){
consume=consume-100;
}
if (activityLevel==='Inactive'){
burn=250;
}
if (activityLevel==='Relatively Active'){
burn=150;
}
if (activityLevel==='Very Active'){
burn=100;
}
}
if(goal==='Gain'){
if((goalWeight/days)<=0.06){
consume=consume+200;
}
if((goalWeight/days)<=0.15){
consume=consume+100;
}
if (activityLevel==='Inactive'){
burn=200;
}
if (activityLevel==='Relatively Active'){
burn=100;
}
if (activityLevel==='Very Active'){
burn=100;
}
}
if(goal==='Maintain'){
burn=100;
}
consume=Math.round(consume);
window.alert(consume);
window.alert(burn);
return [consume,burn];
}
在 window 框中,函数 returns 每次消耗的正确值,但由于某种原因 burn 总是返回零。如果我没有在 if 语句之外声明它,它将返回为未定义。有什么原因我不能在 if 语句中为这个变量分配数字吗?我已经使用 window.alert() 来测试是否正在访问正确的 if 语句,并且每次都是 returns 我想要的,但是 burn 从未被赋值,我不知道为什么!感谢任何建议
编辑 感谢您到目前为止的回答。示例输入是:
var calories = calories(goal, healthyWeight, activityLevel, days, gender, age, height, weight);
其中:
goal = 'Lose'
healthyWeight = 128
activityLevel = 'Inactive'
days = 180
gender = 'M'
age = 20
height = 63
weight = 160
这个returns如预期消耗2101,returns燃烧0
目前我对返回值所做的一切是这样的:
window.alert(consume);
window.alert(burn);
测试它们是什么值,但是一旦函数正常工作,我将使用
var consume=calories.consume;
var burn=calories.burn;
document.getElementById("consume").innerHTML = consume;
document.getElementById("burn").innerHTML = burn;
在浏览器中显示它们的功能之外
return [consume,burn];
将完全按照您的要求执行,因此当您调用 calories(...)
函数然后访问结果时,您似乎做错了什么。
你应该这样做:
var result = calories(...);
console.log(result[0]); // consume value
console.log(result[1]); // burn value
可能主要原因是您的功能没有正确的输入。请提供示例输入。
你应该使用 if-else 语句,例如
if (gender==='F') {
bmr = 655 + (4.3*weight) + (4.7*height) - (4.7*age);
} else {
bmr = 66 + (6.3*weight) + (12.9*height) - (6.8*age);
}
或者 if-else if-else 结构,在 else 中带有警报 - 当您的输入与您的 ifs 不匹配时
if (gender==='F') {
bmr = 655 + (4.3*weight) + (4.7*height) - (4.7*age);
} else if (gender==='M' {
bmr = 66 + (6.3*weight) + (12.9*height) - (6.8*age);
} else {
window.alert('wrong gender: ' + gender);
}