如何用if/else语句判定胜者?求运算符使用及代码解析
解析你的if/else运算符使用问题
嘿,我来帮你梳理这段代码里的问题,以及怎么正确在if/else里用运算符实现胜负判定!
核心问题:直接对对象做算术运算行不通
你现在的代码里直接写了oscar * 5和andrew *5,但oscar和andrew是对象类型,JavaScript没办法直接把对象和数字相乘——它会把对象转换成NaN(非数字值),所以你的三个条件里,前两个>和<的判断都会是false,最后只会走到else分支输出No winner,这显然不是你想要的结果。
正确的实现思路
你需要先从对象里取出要用来计算的属性(比如height或者age),再做乘法运算,最后用比较运算符判断大小。
修改后的代码示例
假设你想用身高来计算胜负,代码可以改成这样:
var oscar = { height: 155, age: 22 }; var andrew = { height: 170, age: 16 }; // 先计算两人的得分(身高×5) const oscarScore = oscar.height * 5; const andrewScore = andrew.height * 5; if (oscarScore > andrewScore) { console.log('Oscar is the winner'); } else if (oscarScore < andrewScore) { console.log('Andrew is the winner'); } else { console.log('No winner'); }
代码里的运算符说明
- 算术运算符
*:用来完成乘法运算,这里是把每个对象的height属性值和5相乘,得到具体的得分数字 - 比较运算符
>/<:用来比较两个得分的大小,作为if/else的判断条件——如果oscarScore大于andrewScore,就执行第一个分支;如果更小就执行第二个分支;相等则走else
额外小技巧
因为两边都乘以同一个正数(5),其实比较得分的大小和直接比较属性值的结果是一样的,所以你也可以简化成这样(效果完全相同):
if (oscar.height > andrew.height) { console.log('Oscar is the winner'); } else if (oscar.height < andrew.height) { console.log('Andrew is the winner'); } else { console.log('No winner'); }
如果之后你想换成用age来计算,只需要把height改成age就可以啦!
内容的提问来源于stack exchange,提问作者user9324214
相关产品推荐
相关产品推荐

