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

为何无论输入什么数字,这段JS猜数比较函数始终返回false?

问题分析:你的比较函数始终返回false的原因

核心问题是计算猜测与秘密数字的差值时没取绝对值。secretNumber - guess得到的是带正负号的数值,当猜测值大于秘密数字时结果为负,直接比较大小会完全偏离“距离远近”的判断逻辑。

拿你测试的compareGuesses(1, 10, 2)举例:

  • 人类猜测差值:2 - 1 = 1
  • 计算机猜测差值:2 - 10 = -8
    此时判断-8 > 1不成立,函数进入else分支返回false,但实际人类猜测离秘密数字更近,应该返回true。

修复方案很简单:用Math.abs()获取差值的绝对值,这样比较的是两者到秘密数字的实际距离:

const compareGuesses = (humanGuess, computerGuess, secretNumber) => {
  const humanDiff = Math.abs(secretNumber - humanGuess);
  const computerDiff = Math.abs(secretNumber - computerGuess);
  
  // 人类赢的条件:距离更小,或者相等时也判定人类赢(可根据需求调整)
  return humanDiff <= computerDiff;
};

console.log(compareGuesses(1, 10, 2)); // 现在会返回正确结果true

另外提个小细节:你用var声明变量的写法没必要,直接返回判断结果更简洁,而且const/let比var的作用域更清晰安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:15:32