双人随机数猜数字游戏JavaScript代码运行结果不符合预期问题
问题原因
- 核心问题是
if判断的逻辑运算符使用错误,你用了逻辑或||,实际应该用逻辑与&& - 原来的判断逻辑
randomNumber != player1 || randomNumber != player2永远为真:只要随机数不等于其中任意一个玩家的猜测值,条件就成立,就算其中一个玩家猜对了,随机数也必然不等于另一个玩家的猜测值,所以永远会进入「没人猜对」的分支 - 额外问题:你现在把玩家猜测值、随机数都定义为字符串类型,而注释里的随机数生成语句得到的是数字类型,后续如果切换成正式生成逻辑,用
!=虽然会隐式转换但存在类型不匹配的隐患,建议统一用数字类型+严格相等判断
修复方法
- 把
if条件里的逻辑或||替换为逻辑与&&,只有当随机数同时不等于两个玩家的猜测值时,才判定为没人猜对 - 建议把所有数值统一为数字类型,用严格相等/不等运算符
===/!==避免隐式转换带来的问题
修复后代码
const player1 = 87 const player2 = 55 // 测试时可以临时固定值,正式使用替换为注释内的生成语句 const randomNumber = 55 // Math.floor(Math.random() * 100 + 1) console.log('Player 1:', player1) console.log('Player 2:', player2) // 只有同时不等于两个玩家的猜测才判定为没人猜对 if(randomNumber !== player1 && randomNumber !== player2){ console.log('No one guessed the random number which is', randomNumber) } else { // 只要有一个人猜对就进入该分支 console.log('The random number is', randomNumber) }
内容的提问来源于stack exchange,提问作者Mattia Beppato
相关产品推荐
相关产品推荐

