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

JavaScript开发Tic Tac Toe(井字棋)游戏获胜逻辑问题求助

井字棋获胜逻辑代码修正

现有代码的问题点

  • 变量命名冲突:函数名和内部存储获胜组合的数组重名,均为winning,存在作用域覆盖隐患
  • 循环边界错误:数组索引从0开始,循环判断条件写为i <= winning.length会出现数组越界访问,winning[i]得到undefined后读取属性会直接抛出异常,导致获胜判断逻辑完全失效

修正后代码

const checkWin = () => {
  // 重命名数组避免命名冲突
  const winningConditions = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  // 修正循环边界,去掉等号
  for (let i = 0; i < winningConditions.length; i++) {
    const condition = winningConditions[i];
    const a = spaces[condition[0]];
    const b = spaces[condition[1]];
    const c = spaces[condition[2]];
    if (a === "" || b === "" || c === "") {
      continue;
    }
    if (a === b && b === c) {
      roundWon = true;
      break;
    }
  }
};

额外优化建议

  • 可以给函数增加返回值,直接返回是否获胜,避免依赖外部全局变量roundWon,降低耦合度
  • 获胜后可以同步返回当前获胜的玩家标记,方便后续高亮获胜线、提示获胜玩家逻辑的开发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:57:04