首页 > 解决方案 > 此函数未返回预期代码

问题描述

/* Task 3 */

//Dog feeder - 根据他们的体重和年龄,我们需要知道每天喂狗多少磅的食物!/* 使用下面的饥饿狗功能和喂食要求来执行以下操作:

  1. 调用下面的饥饿狗函数并传递一个以磅为单位的重量值
  2. 此外,将年龄值传递给饥饿狗(注意:如果狗是小狗,则年龄将为小数。例如:三个月 = 3/12 或 .25)
  3. 进行正确的计算并返回一天喂狗/小狗的生食磅数

记住:这个程序应该正确处理成年和小狗的年龄和体重

喂养要求:

1 岁及以上的成年犬 5 磅 - 体重的 5% 6 - 10 磅 - 体重的 4% 11 - 15 磅 - 体重的 3% > 15 磅 - 体重的 2%

1 岁以下的幼犬 2 - 4 个月 体重的 10% 4 - 7 个月 体重的 5% 7 - 12 个月 体重的 4%

注意:如果操作正确,15 磅的重量和 1 岁的年龄将返回 0.44999999999999996 */

function hungryDog(age,weight){
if (age >= 1){
  if (weight <= 5){
    let foodAmount = weight * .05;
  }
  else if (weight <= 10){
    let foodAmount = weight * .04;
  }
  else if (weight <= 15) {
    let foodAmount = weight * .03;
  }
  else if (weight > 15) {
    let foodAmount = weight * .02;
  }
 }
 else if (age < 1) {
  if (age <= .33) {
    let foodAmount = weight * .10;
  }
  else if (age <=.5833) {
    let foodAmount = weight * .05;
  }
  else if (age < 1) {
    let foodAmount = weight * .04;
  }
}

return foodAmount;

}

console.log(hungryDog(1,15))

我不知道我在这里缺少什么。请帮忙!错误读取 foodAmount 未定义。

标签: javascriptfunctionvariablesreturnconditional-statements

解决方案


您需要在顶部声明您的 foodAmount,以便您可以在某些 if-else 块中更新其值,然后在最后返回。按照您声明它的方式,foodAmount 仅在您的 if-else 块中可用,但在您尝试在函数结束时返回它时未定义

function hungryDog(age,weight){
    let foodAmount;
    if (age >= 1){
      if (weight <= 5){
        foodAmount = weight * .05;
      }
      else if (weight <= 10){
        foodAmount = weight * .04;
      }
      else if (weight <= 15) {
        foodAmount = weight * .03;
      }
      else if (weight > 15) {
        foodAmount = weight * .02;
      }
     }
     else if (age < 1) {
      if (age <= .33) {
        foodAmount = weight * .10;
      }
      else if (age <=.5833) {
        foodAmount = weight * .05;
      }
      else if (age < 1) {
        foodAmount = weight * .04;
      }
    }

    return foodAmount;

}


推荐阅读