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

JavaScript if判断异常,输入非法值未打印Error反而返回原值

问题根因

你的if判断条件写法不符合JS逻辑运算符规则,运行时永远返回true,所以所有输入都会走进if分支直接返回值,不会触发else的Error打印。
JS中|| 逻辑或运算符是逐段判断真假值,你写的userInput === "rock" || "scissors" 会被拆成两步判断:

  • 第一步先算userInput === "rock",结果为真的话整体条件为真
  • 第一步结果为假的话,会直接判断"scissors"的布尔值,非空字符串的布尔值永远是true,所以不管输入是什么,整个if条件永远成立

修复方案

你需要把每个判断条件都补全相等判断,或者用数组包含的方法简化写法:

写法1:补全所有相等判断

const getUserChoice = (userInput) => {
  userInput = userInput.toLowerCase();
  if (userInput === "rock" || userInput === "scissors" || userInput === "paper" || userInput === "bomb") {
    return userInput;
  } else {
    console.log("Error");
  }
};

写法2:用数组includes方法简化(更易维护)

const getUserChoice = (userInput) => {
  userInput = userInput.toLowerCase();
  const validOptions = ["rock", "scissors", "paper", "bomb"];
  if (validOptions.includes(userInput)) {
    return userInput;
  } else {
    console.log("Error");
  }
};

修改后调用getUserChoice("Randommm") 就会触发else分支打印Error,传入rocK 还是可以正常返回rock,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:15:06