Javascript 为什么不是';我的jquery开关语句不能工作吗?

Javascript 为什么不是';我的jquery开关语句不能工作吗?,javascript,jquery,switch-statement,Javascript,Jquery,Switch Statement,我正在使用一些简单的运算符尝试一个jquery(javascript)switch语句,但它没有按预期工作 console.log('test '+getShippingCost(8)); function getShippingCost(shop_qty) { shipping_costs = 0; dest = $("input[name='dest']").val(); console.log(

我正在使用一些简单的运算符尝试一个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
console.log('test'+getShippingCost(8));
函数getShippingCost(车间数量){
运输成本=0;
dest=$(“输入[name='dest']”)val();
控制台日志(dest);
如果(目的地==‘国内’){
开关(车间数量){
案例(车间数量>4):
运输成本=3.5;
打破
箱子(车间数量4):
运输成本=4.5;
打破

case(shop_quaty语句中的case用于计算值,而不是布尔表达式:

您可以将尝试使用
switch
语句所建议的逻辑放在三元表达式中,例如:

shipping_costs = (shop_qty > 4) ? 3.5 : 2;

Switch不通过计算布尔表达式来工作。Switch计算初始表达式,然后尝试使用严格相等将大小写与该表达式匹配。因此,您不能这样做

case(x<4.5):

改用if、else if、else stations。

要在
开关中为案例使用条件
,您需要在案例中查找
真值

switch (true) {
  case (shop_qty > 4):
    shipping_costs = 3.5;
    break;
  case (shop_qty <= 4):
    shipping_costs = 2;
    break;
}

这种结构在有几个条件时更适合。在这种情况下,应该考虑<代码> > 语句:

if (shop_qty > 4) {
    shipping_costs = 3.5;
} else {
    shipping_costs = 2;
}
由于这两种情况都为同一变量指定了一个值,因此也可以使用条件运算符写入该变量:

shipping_costs = shop_qty > 4 ? 3.5 : 2;

它在做什么,你期望什么?使用if语句!使用
if
/
else
代替。你确定
开关(true)
吗?快速测试表明你是正确的,我并不是真的期望它。输入为Thx!
if (shop_qty > 4) {
    shipping_costs = 3.5;
} else {
    shipping_costs = 2;
}
shipping_costs = shop_qty > 4 ? 3.5 : 2;