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