JavaScript:尝试减去两个变量会为我返回NaN

JavaScript:尝试减去两个变量会为我返回NaN,javascript,Javascript,我正在尝试建立一个简单的卡路里计算器,由于一些奇怪的原因,我的总卡路里(卡路里,一个整数,减去卡路里减少,一个整数)的数学一直返回NaN。谁能告诉我我错过了什么?我已经测试了console.log在我输入的卡路里和卡路里减少上的输出,它们都以整数的形式返回。我不明白为什么从另一个减去一个会返回NaN,除非我需要手动将TotalCarries定义为一个整数。我是个新手,所以我不确定最好的方法。谢谢你的帮助。谢谢 var maxCaloriesCodes = ['FMW', 'FLW', 'MMW'

我正在尝试建立一个简单的卡路里计算器,由于一些奇怪的原因,我的总卡路里(卡路里,一个整数,减去卡路里减少,一个整数)的数学一直返回NaN。谁能告诉我我错过了什么?我已经测试了console.log在我输入的卡路里和卡路里减少上的输出,它们都以整数的形式返回。我不明白为什么从另一个减去一个会返回NaN,除非我需要手动将TotalCarries定义为一个整数。我是个新手,所以我不确定最好的方法。谢谢你的帮助。谢谢

var maxCaloriesCodes = ['FMW', 'FLW', 'MMW', 'MLW'];
var maxCaloriesAllowed = [2000, 1500, 2500, 2000];
var exerciseCodes = ['FL', 'FM', 'FV', 'ML', 'MM', 'MV'];
var exerciseCalories = [240, 370, 580, 300, 460, 730];

function performAssessment(){

var genderElem = document.getElementById('gender_id');
var genderValue = genderElem.options[genderElem.selectedIndex].value;
var genderText = genderElem.options[genderElem.selectedIndex].text;

var goalElem = document.getElementById('goal_id');
var goalValue = goalElem.options[goalElem.selectedIndex].value;
var goalText = goalElem.options[goalElem.selectedIndex].text;

var exerciseElem = document.getElementById('exercise_id');
var exerciseValue = exerciseElem.options[exerciseElem.selectedIndex].value;
var exerciseText = exerciseElem.options[exerciseElem.selectedIndex].text;

var caloriesCode = genderValue + goalValue;
var caloriesAllowed;
var completeExerciseCodes = genderValue + exerciseValue;
var calorieDeduction;
var totalCalories;

// Loop through the array and locate the code to get the maximum calories
for (var codeCount = 0; codeCount < maxCaloriesCodes.length; codeCount++) {
    // Determine if the current code is the array
    if (maxCaloriesCodes[codeCount] == caloriesCode) {
        caloriesAllowed = maxCaloriesAllowed[codeCount];
    }
}

totalCalories = (calories - calorieDeduction);

// Loop through my exercise arrays and locate codes for calorie deductions
for (var codeCount = 0; codeCount < exerciseCodes.length; codeCount++){
    // Determine if the current code is in the array
    if (exerciseCodes[codeCount] == completeExerciseCodes) {
        calorieDeduction = exerciseCalories[codeCount];
    }
}

console.log(totalCalories)
}
var maxcaloriescode=['FMW','FLW','MMW','MLW'];
var最大允许热量=[2000,1500,2500,2000];
var exerciseCodes=['FL','FM','FV','ML','MM','MV'];
var锻炼卡路里=[240370580300460730];
函数性能评估(){
var genderlem=document.getElementById('gender_id');
var genderValue=genderlem.options[genderlem.selectedIndex].value;
var genderText=genderlem.options[genderlem.selectedIndex].text;
var goalElem=document.getElementById('goal_id');
var goalValue=goallem.options[goallem.selectedIndex].value;
var goalText=goallem.options[goallem.selectedIndex].text;
var exerciselem=document.getElementById('exercise_id');
var exerciseValue=exerciselem.options[exerciselem.selectedIndex].value;
var exerciseText=exerciselem.options[exerciselem.selectedIndex].text;
var卡路里代码=性别价值+目标价值;
允许var热量;
var completeExerciseCodes=genderValue+exerciseValue;
var热量降低;
总热量;
//循环遍历数组并找到代码以获得最大热量
对于(var codeCount=0;codeCount
除了循环,如果子句或函数调用,代码是从上到下逐行执行的。在执行
totalcarries=(carries-carriededuction)
的行中,
carries
carriededuction
都没有值。或者实际上它们的值是
未定义的
,这会给出NaN。

哪里是
热量减少
初始化的?如果它没有明确设置为某个值,它的值将是
未定义的
,减法将给出
NaN
;在您定义什么是
carriededuction
之前,
carriededuction
没有设置为任何值,因此它是
未定义的
。它在for循环中初始化,但我在循环之前定义了totalcarries。我移动了线,它就固定了。非常感谢。许多应该/可能是答案的评论。