Javascript 为什么不是';我的jquery开关语句不能工作吗?
我正在使用一些简单的运算符尝试一个jquery(javascript)switch语句,但它没有按预期工作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(
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;