Codecademy Race Day项目else语句异常:年龄设为18时未触发
问题分析与修复
你代码里的问题出在第三个else if的条件判断上。当前的early || !early && age < 18由于逻辑运算符优先级(&&比||高),实际等价于early || (!early && age < 18)。当age=18且early=true时,这个条件会直接成立,导致代码进入这个分支,永远碰不到最后的else。
修复后的代码
let raceNumber = Math.floor(Math.random() * 1000); const early = true; const age = 18; if (early && age > 18) { raceNumber += 1000; console.log("Your race starts at 9:30am, and your number is " + raceNumber + "."); } else if (!early && age > 18) { console.log("Your race starts at 11:00am, and your number is " + raceNumber + "."); } else if (age < 18) { // 简化条件,前面已排除age>18的情况 console.log('Your race starts at 12:30pm, and your number is ' + raceNumber + '.'); } else { console.log('Please see the registration desk for your race time and number'); }
修复说明
- 把第三个
else if的条件简化为age < 18即可,前面两个条件已经处理了所有age>18的情况,剩下的只有age<=18,这里判断age<18,最后else自然会处理age=18的场景。 - 要是想保留原逻辑的结构,也可以把第三个条件改成
(early || !early) && age < 18,但完全没必要,直接写age < 18更简洁清晰。
内容的提问来源于stack exchange,提问作者Ryan Brown
相关产品推荐
相关产品推荐

