我的switch语句不断返回未定义。什么

时间:2020-02-06 21:44:26

标签: javascript

function tipCalculator(bill) {
  switch (bill) {
    case (bill < 50):
      return bill * 0.2;
    case (bill >= 50) && (bill < 200):
      return bill * 0.15;
    case (bill > 100):
      return bill * 0.2
    default:
      console.log('this statement is empty');
  }
};

console.log(tipCalculator(125));

它一直返回未定义。堆栈溢出正在要求我添加更多文本,但是这里的问题确实说明了一切,因此我将把这个耗尽。请帮助obi wan

1 个答案:

答案 0 :(得分:3)

您的switch语句也没有执行您认为的操作:switch枚举值(大小写)。您仅在开关中使用if-then逻辑。 case (bill < 50)的计算结果为case false,不等于125,因此跳过了这一点。每种情况都会发生这种情况,因为这些案例使用的是表达式,而不是实际值。

由于默认语句是唯一可能出现的语句,并且不返回任何值,因此此开关将始终返回未定义的值。

您可能需要以下代码:

function tipCalculator(bill) {
    if (bill < 50) {
        return bill * 0.2;
    } else if (bill >= 50 && bill < 200) {
        return bill * 0.15;
    } else if (bill > 100) {
        return bill * 0.2;   
    } else {
        throw new Error('Unknown bill.')
    }
};

console.log(tipCalculator(125));