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
相关产品推荐
相关产品推荐

