我正在尝试使用一些简单的运算符的jquery(javascript)switch语句,但它没有按预期工作
console.log('test '+getShippingCost(8));
function getShippingCost(shop_qty) {
shipping_costs = 0;
dest = $("input[name='dest']").val();
console.log(dest);
if (dest === 'DOMESTIC') {
switch (shop_qty) {
case (shop_qty > 4):
shipping_costs = 3.5;
break;
case (shop_qty <= 4):
shipping_costs = 2;
break;
}
console.log('domestic shipping '+shipping_costs);
}
if (dest === 'INT') {
switch (shop_qty) {
case (shop_qty > 4):
shipping_costs = 4.5;
break;
case (shop_qty <= 4):
shipping_costs = 3;
break;
}
}
return shipping_costs;
}//end function
请参阅see jsfiddle
答案 0 :(得分:2)
要在switch
中使用案例的条件,您需要在案例中查找true
值:
switch (true) {
case (shop_qty > 4):
shipping_costs = 3.5;
break;
case (shop_qty <= 4):
shipping_costs = 2;
break;
}
由于第二种情况与第一种情况相反,您只需使用default
即可:
switch (true) {
case (shop_qty > 4):
shipping_costs = 3.5;
break;
default:
shipping_costs = 2;
break;
}
当你有几个条件时,这样的结构更适合。在这种情况下,您应该考虑if
语句是否更适合:
if (shop_qty > 4) {
shipping_costs = 3.5;
} else {
shipping_costs = 2;
}
由于两种情况都为同一个变量赋值,您也可以使用条件运算符来编写它:
shipping_costs = shop_qty > 4 ? 3.5 : 2;
答案 1 :(得分:0)
switch
语句中的案例评估值,而不是布尔表达式:See Here。
您可以将尝试使用switch
语句建议的逻辑放在三元表达式中,例如:
shipping_costs = (shop_qty > 4) ? 3.5 : 2;
答案 2 :(得分:0)
Switch不通过评估布尔表达式来工作。 Switch评估初始表达式,然后尝试使用严格相等将案例与该表达式匹配。所以你不能做
case(x<4.5):
您必须执行类似
的操作case 4:
使用if,else if,else statments。