You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

篮球得分计算函数返回else提示与undefined问题求助

问题:篮球得分计算函数返回错误提示与undefined的修复方案

我原本认为这段代码逻辑正确,功能是根据罚球(free throws)、两分球(2 pointers)、三分球(3 pointers)的数量计算篮球总得分。但调用totalBasketballScore(1, 2, 4)并通过console.log输出时,结果为'All Entries Must Be a Number'和undefined,请问需要修改哪里才能得到正确的得分?

原代码:

function totalBasketballScore(numberFreeThrows, numberMidRange, numberThreePointers) {
  const freeThrows = 1;
  const midRange = 2;
  const threePointers = 3;

  if (typeof numberFreeThrows === 'number' && numberMidRange === 'number' && numberThreePointers === 'number') {
    let totalFreeThrows = freeThrows * numberFreeThrows;
    let totalMidRange = midRange * numberMidRange;
    let totalThreePointers = threePointers * numberThreePointers;
    let gameTotal = totalFreeThrows + totalMidRange + totalThreePointers;
    return gameTotal;

  } else {
    console.log('All Entries Must Be a Number');
  }
}
console.log(totalBasketballScore(1, 2, 4));

问题原因

类型判断逻辑错误:条件中仅对numberFreeThrows使用了typeof判断类型,而numberMidRange和numberThreePointers直接与字符串'number'做全等比较。由于传入的参数是数值类型,和字符串'number'全等判断结果为false,导致条件永远不成立,每次都会进入else分支:打印错误提示,且因为else分支没有返回值,函数默认返回undefined,最终console.log输出这两个结果。

修复方案

修正类型判断条件,为每个参数都添加typeof检查,同时可给else分支补充返回值避免undefined:

function totalBasketballScore(numberFreeThrows, numberMidRange, numberThreePointers) {
  const freeThrows = 1;
  const midRange = 2;
  const threePointers = 3;

  // 为所有参数添加typeof类型判断
  if (typeof numberFreeThrows === 'number' && typeof numberMidRange === 'number' && typeof numberThreePointers === 'number') {
    const totalFreeThrows = freeThrows * numberFreeThrows;
    const totalMidRange = midRange * numberMidRange;
    const totalThreePointers = threePointers * numberThreePointers;
    const gameTotal = totalFreeThrows + totalMidRange + totalThreePointers;
    return gameTotal;
  } else {
    console.log('All Entries Must Be a Number');
    // 可选:返回一个默认值,避免函数返回undefined
    return 0;
  }
}
console.log(totalBasketballScore(1, 2, 4)); // 输出17

修复后调用totalBasketballScore(1, 2, 4)会得到正确结果17(计算逻辑:11 + 22 + 4*3 = 1+4+12=17)。

内容的提问来源于stack exchange,提问作者HarrisWeinblatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:15:36