首页 > 解决方案 > 我的 switch 语句不断返回未定义。什么

问题描述

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));

它不断返回未定义。堆栈溢出要求我添加更多文本,但这里的问题确实不言自明,所以我只想运行这个。请帮助欧比万

标签: javascript

解决方案


您的 switch 语句也不会像您认为的那样做:switch 枚举值(案例)。您只是在开关中使用 if-then 逻辑。case (bill < 50)计算结果为case false,不等于125,因此它会跳过它。每种情况都会发生这种情况,因为这些情况使用的是表达式,而不是实际值。

由于 default 语句是唯一可能出现的语句,并且它不返回任何值,因此此开关将始终返回 undefined。

您可能需要如下代码:

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));

推荐阅读