无法将数字分配给 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);
}