我不明白为什么大于 20 的 b 参数在这里不起作用。查看结果
锻炼:
编写一个函数 addWithSurcharge 将两个金额与附加费相加。小于等于 10 的金额每增加 1 次附加费。大于 10 且小于等于 20 的金额每增加 2 次附加费。大于 20 的每次增加 3 次附加费。
示例: addWithSurcharge(10, 30) 应返回 44。
function addWithSurcharge(a,b) {
let sur1 = 0
if (a <= 10) {
sur1 = 1;
} else if (10 < a <= 20) {
sur1 = 2;
} else if (a > 20) {
sur1 = 3;
}
let sur2 = 0
if (b <= 10) {
sur2 = 1;
} else if (10 < b <= 20) {
sur2 = 2;
} else if (b > 20) {
sur2 = 3;
}
return a + b + sur1 + sur2;
}
最佳答案
问题
原因是你条件else if (10 < a <= 20)
计算结果为 真实 .
10 < a
将被评估为 真实 true <= 20
将被评估为 真实 . 所以这个数字将被评估为 bool 值,每个大于 0 的数字都被评估为真。这就是为什么
true <= 20
计算结果为 真实 您可以通过此代码段检查这一点
console.log(true <= 20)
console.log(true <= 0)
console.log(true <= -3)
解决方案
要定义范围,您应该像这样使用 && 运算符
else if (10 < b && b <= 20)
然后它会if 10 < 30
评估为 真实 if 30 <= 20
评估为 假 true && false
将评估为 假 function addWithSurcharge(a,b) {
let sur1 = 0
if (a <= 10) {
sur1 = 1;
} else if (10 < a && a <= 20) {
sur1 = 2;
} else if (a > 20) {
sur1 = 3;
}
let sur2 = 0
if (b <= 10) {
sur2 = 1;
} else if (10 < b && b <= 20) {
sur2 = 2;
} else if (b > 20) {
sur2 = 3;
}
return a + b + sur1 + sur2;
}
console.log(addWithSurcharge(10,30))
关于javascript - 条件练习 addWithSurcharge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65632549/