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

JavaScript if else语句报Unexpected token )语法错误如何解决

问题概述

开发JavaScript石头剪刀布基础练习项目时,if else条件判断逻辑触发语法错误,控制台抛出错误:
Uncaught SyntaxError: "Unexpected token )"
错误定位到文件/home/ccuser/workspace/javascript_101_Unit_3_v2/rockPaperScissors.js第38行,指向)字符,问题代码片段如下:

userInput = userInput.toLowerCase();
  if (userInput !== "rock" && userInput !== "paper" && userInput !== "scissor") {
    console.log("Error");
  } else {
    return userInput;
  }
}

const getComputerChoice = () => {
  const randomNumber = Math.floor(Math.random() * 3);
  switch(randomNumber){
    case 0: return "scissor";
    break;
    case 1: return "rock";
    break;
    default: return "paper";
    break;
  }
}

const determinWinner = (userChoice, computerChoice) => {
  if(userChoice === computerChoice){
    return "Its a tie";
  } else if (userChoice === "rock" && computerChoice ==="scissor"){
    return "The user won";
  } else if (userChoice === "paper" && computerChoice ==="rock"){
    return "The user won";
  } else if (userChoice === "scissor" && computerChoice ==="paper"){
    return "The user won";
  } else if (userChoice === "rock" && computerChoice ==="paper"){
    return "The computer won";
  } else if (userChoice === "paper" && computerChoice ==="scissor"){
    return "The computer won";
  } else if (userChoice === "scissor" && computerChoice ==="rock"){
    return "The computer won";
  }
错误原因

核心问题是determinWinner箭头函数的函数体缺失闭合花括号}:
函数声明时只写了开启函数体的左花括号{,所有if/else if分支写完后没有补对应的右花括号闭合函数作用域,JS语法解析器无法正确识别函数边界,会持续向后解析寻找缺失的闭合符号,直到读到第38行的)字符时判定语法规则不匹配,因此抛出意外token的语法错误,报错位置会出现偏移,不会精准指向缺失符号的实际位置。

修复方案
  • 核心修复:在determinWinner函数所有条件判断分支的末尾,补上缺失的函数体闭合花括号}即可解决语法报错
  • 冗余代码清理:getComputerChoice函数的switch分支中,return语句执行后会直接退出函数,后面的break永远不会被执行,属于无效代码,可以直接删除
  • 可选优化:determinWinner存在拼写错误,正确拼写应为determineWinner,避免后续调用函数时因为拼写不匹配触发未定义错误

修复后的对应代码段:

const determineWinner = (userChoice, computerChoice) => {
  if(userChoice === computerChoice){
    return "Its a tie";
  } else if (userChoice === "rock" && computerChoice ==="scissor"){
    return "The user won";
  } else if (userChoice === "paper" && computerChoice ==="rock"){
    return "The user won";
  } else if (userChoice === "scissor" && computerChoice ==="paper"){
    return "The user won";
  } else if (userChoice === "rock" && computerChoice ==="paper"){
    return "The computer won";
  } else if (userChoice === "paper" && computerChoice ==="scissor"){
    return "The computer won";
  } else if (userChoice === "scissor" && computerChoice ==="rock"){
    return "The computer won";
  }
}

// 清理冗余break后的getComputerChoice
const getComputerChoice = () => {
  const randomNumber = Math.floor(Math.random() * 3);
  switch(randomNumber){
    case 0: return "scissor";
    case 1: return "rock";
    default: return "paper";
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:00:55