javascript - 我的 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));
它不断返回未定义。堆栈溢出要求我添加更多文本,但这里的问题确实不言自明,所以我只想运行这个。请帮助欧比万
解决方案
您的 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));
推荐阅读
- c++ - memset操作后array的结果为0
- php - php 读取 json 文件 - 我无法读取多层元素
- java - 位图调整大小
- javascript - Javascript从数组中获取两个最小的数字
- xpath - Xpath 从表单中提取文本
- awk - awk 或 sed 删除字段中最后一个数字后的文本
- typescript - 在无服务器配置中执行 Typescript 代码
- powershell - 根据Powershell中的百分比随机更改二维数组
- java - Spring Boot RestTemplate 复合响应空列表
- angular-dart - 使用 Dart SDK 2.1.0-dev 运行 angular_components