为什么我的 jquery switch 语句不起作用?
Why isn't my jquery switch statement working?
我正在尝试使用一些简单运算符的 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
switch
语句中的案例计算值,而不是布尔表达式:See Here。
您可以将尝试使用 switch
语句所建议的逻辑放在三元表达式中,例如:
shipping_costs = (shop_qty > 4) ? 3.5 : 2;
Switch 无法通过计算布尔表达式来工作。 Switch 计算一个初始表达式,然后尝试使用严格相等将 case 与该表达式匹配。所以你不能做
case(x<4.5):
你必须做类似
的事情
case 4:
改用 if、else if、else 语句。
要为 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;
我正在尝试使用一些简单运算符的 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
switch
语句中的案例计算值,而不是布尔表达式:See Here。
您可以将尝试使用 switch
语句所建议的逻辑放在三元表达式中,例如:
shipping_costs = (shop_qty > 4) ? 3.5 : 2;
Switch 无法通过计算布尔表达式来工作。 Switch 计算一个初始表达式,然后尝试使用严格相等将 case 与该表达式匹配。所以你不能做
case(x<4.5):
你必须做类似
的事情case 4:
改用 if、else if、else 语句。
要为 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;