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

FreeCodeCamp石头剪刀布游戏:hasPlayerWonTheRound函数返回布尔值报错

问题分析与解决

问题背景

正在解决FreeCodeCamp的石头剪刀布游戏问题,当前需实现hasPlayerWonTheRound函数,判断玩家是否赢下单轮对局:

  • 函数接收player和computer两个参数
  • 玩家获胜的判定条件:
    • 玩家选择"Rock"且电脑选择"Scissors"
    • 玩家选择"Scissors"且电脑选择"Paper"
    • 玩家选择"Paper"且电脑选择"Rock"
  • 玩家赢则返回true,输或平局则返回false

提交的代码如下:

function hasPlayerWonTheRound(player, computer) {
 if (player === "Rock" && computer === "Scissors") {
  return true;
  }

else if (player =="Scissors" && computer =="Paper") { 
  return true;
  }

else if (player =="Paper" && computer =="Rock") { 
 return true; 
 }

else if (player=="Rock" && computer=="Rock") {
  return false;
}

else if (player=="Paper" && computer=="Paper") {
  return false;
}
else (player=="Scissors" && computer=="Scissors") {
  return false;
}

报错提示(翻译后):

你的hasPlayerWonTheRound函数应该返回一个布尔值。

错误原因

最后一行的else语法错误:else关键字后不能直接跟条件判断语句,这种写法会导致代码语法异常,函数在某些分支下无法正常返回布尔值,触发报错。

修复方案

方案一:修正语法并简化分支

去掉最后一行else后的条件判断,用else统一处理所有非获胜情况:

function hasPlayerWonTheRound(player, computer) {
 if (player === "Rock" && computer === "Scissors") {
  return true;
 } else if (player == "Scissors" && computer == "Paper") { 
  return true;
 } else if (player == "Paper" && computer == "Rock") { 
  return true; 
 } else {
  return false;
 }
}

方案二:极简逻辑写法

直接通过逻辑或判断所有获胜条件,其余情况自动返回false:

function hasPlayerWonTheRound(player, computer) {
  return (
    (player === "Rock" && computer === "Scissors") ||
    (player === "Scissors" && computer === "Paper") ||
    (player === "Paper" && computer === "Rock")
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:52:39