javascript - 条件练习 addWithSurcharge

标签 javascript if-statement conditional-statements

我不明白为什么大于 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;
}
results

最佳答案

问题
原因是你条件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/

    相关文章:

    javascript - Jqueryui 对话框 ("close") 结束当前 javascript 线程

    C++ : How to reduce conditional statements

    javascript - 分配变量的条件与内联条件检查

    c - 如果有条件,多行的良好C编码样式

    统计一个字节中 '1s'的个数

    javascript - 石头剪刀布蜥蜴史波克游戏逻辑偶尔会输出错误的获胜者,我不知道为什么

    javascript - 无法在 Python 中的 AJAX 上使用 javascript

    C++-(If 语句)Else 总是显示

    java - java代码有什么问题?

    javascript - 使用 javascript 处理动态信息图的好方法?