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

JavaScript IF语句返回异常:随机选门代码输出错误排查

问题分析与解决

嘿,我一眼就瞅出问题啦!你的代码里有个关键小疏忽——selectDoor函数没有返回值,这才导致不管随机选到哪扇门,结果都是‘you lose’。

具体原因

当你调用selectDoor()的时候,函数内部只是用console.log打印了选中的门,但没有把这个值返回给调用它的地方。JavaScript里,没有return语句的函数默认会返回undefined。所以你的条件判断其实是在做undefined === "door1",这显然永远是false,自然就一直走else分支输出‘you lose’了。

修正后的代码

只需要给函数加上return语句,把选中的门返回出来就行,另外还可以优化一下随机选择的逻辑,让它更通用:

let doors = ["door1", "door2"]
function selectDoor() {
  // 用Math.floor + 数组长度,以后加更多门也不用改这里
  const randomIndex = Math.floor(Math.random() * doors.length)
  const randomDoor = doors[randomIndex]
  console.log(randomDoor)
  // 关键:返回选中的门
  return randomDoor
}
if(selectDoor() === "door1") {
  console.log('you win')
} else {
  console.log('you lose')
}

额外小提示

原来的Math.round(Math.random())虽然也能在两个元素的数组里工作,但如果以后你给doors数组添加更多元素,这个写法就失效了。用Math.floor(Math.random() * doors.length)可以自动适配数组的长度,扩展性更好哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:05:10