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

freeCodeCamp算牌作业变量赋值疑问:我的代码为何无法通过测试?

算牌作业代码无法通过测试的原因

你的代码和参考解法的核心差异,不在于返回值的拼接方式,而在于你修改了全局变量count的类型——这直接导致后续函数调用彻底失效。

问题详细分析:

  1. 初始时count是数字类型(值为0)。
  2. 第一次调用cc(card)时,switch语句会正确修改count的数字值,之后你执行count += " Bet"或count += " Hold",这会把count从数字变成字符串类型(比如变成"1 Bet"或"-1 Hold")。
  3. 第二次及之后调用cc(card)时,switch语句里的count++或count--操作会作用在字符串上:
    • 字符串无法进行自增/自减运算,JS会把它转换成NaN(非数字)。
    • 之后的if (count > 0)判断中,NaN和任何值比较都是false,最终返回的结果会是"NaN Hold"这类完全错误的内容。

而参考解法中,只是用count的当前数字值去拼接字符串并返回,从未修改全局的count变量——它始终保持数字类型,每次调用都能正确完成计数逻辑。

你的代码:

let count = 0;

function cc(card) {
  switch (card){
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      count++;
      break;
    case 10:
    case 'J':
    case 'Q':
    case 'K':
    case 'A':
      count--;
      break; 
  }

  if (count > 0) {
    count += " Bet";
  } else {
    count += " Hold";
  }
  
  return count;
}

参考解法:

let count = 0;

function cc(card) {
  // Only change code below this line
  switch (card) {
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      count++;
      break;
    case 10:
    case "J":
    case "Q":
    case "K":
    case "A":
      count--;
      break;
  }
  if (count > 0) {
    return count + " Bet";
  } else {
    return count + " Hold";
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:08:34