为何JavaScript未执行else分支?小费计算函数逻辑异常
问题原因:555账单错误按15%计算小费
你的代码核心问题出在calcTip函数的条件判断逻辑上:
你写的条件是bill >= 50 || bill <= 300,这里用了逻辑或(||),它的规则是只要任意一个条件为真,整个判断就为真。
对于555这个数值来说,它满足bill >= 50(555确实大于50),所以条件判断直接成立,执行了return bill * 0.15的逻辑,而不是进入else分支。
正确的区间判断应该用逻辑与(&&),表示必须同时满足「大于等于50」和「小于等于300」两个条件,才按15%计算小费。
修正后的代码如下:
const calcTip = bill => { if (bill >= 50 && bill <= 300){ return bill * 0.15 } else { return bill * 0.20 } }; const bills = [125, 555, 44]; const tips = [calcTip(bills[0]), calcTip(bills[1]), calcTip(bills[2])]; console.log(tips[1]) // 输出111,即555*0.2
简单总结:区间判断要用&&来关联两个边界条件,||会导致范围判断逻辑完全错误。
内容的提问来源于stack exchange,提问作者Shunkun
相关产品推荐
相关产品推荐

