Javascript 开关/大小写始终返回默认值
我有以下问题:无论我尝试什么,我的函数总是返回默认值。当我使用if/else语句时,一切正常。失败在哪里Javascript 开关/大小写始终返回默认值,javascript,Javascript,我有以下问题:无论我尝试什么,我的函数总是返回默认值。当我使用if/else语句时,一切正常。失败在哪里 功能auswertung(stueckzahl){ var preis1=0.77; var preis2=0.76; var-preis3=0.73; var preis4=0.69; var preis5=0.67; 开关(stueckzahl){ case((stueckzahl>=500)&&(stueckzahl=1001)&(stueckzahl=2501)&&(stueckz
功能auswertung(stueckzahl){
var preis1=0.77;
var preis2=0.76;
var-preis3=0.73;
var preis4=0.69;
var preis5=0.67;
开关(stueckzahl){
case((stueckzahl>=500)&&(stueckzahl=1001)&(stueckzahl=2501)&&(stueckzahl=5001)&(stueckzahl=10001)&(stueckzahl如果要将表达式传递给case
语句,则首先对其求值
依照
让exprRef作为计算表达式的结果
让switchValue为GetValue(exprRef)
所以
如果要将表达式传递给case
语句,则首先对其求值
依照
让exprRef作为计算表达式的结果
让switchValue为GetValue(exprRef)
所以
您的开关期望“stueckzahl”是一个值,而不是“真”或“假”,这就是“(stueckzahl>=500)和(stueckzahl您的开关期望“stueckzahl”是一个值,而不是“真”或“假”,这就是“(stueckzahl>=500)和(stueckzahl您需要在每个case
语句之后包括break;
)
例如
switch (true) {
case ((stueckzahl >= 500) && (stueckzahl <= 1000)): return preis1; break;
case ((stueckzahl >= 1001) && (stueckzahl <= 2500)): return preis2; break;
[...]
}
开关(真){
案例((stueckzahl>=500)&&(stueckzahl=1001)&(stueckzahl您需要在每个案例
语句后包含中断;
例如
switch (true) {
case ((stueckzahl >= 500) && (stueckzahl <= 1000)): return preis1; break;
case ((stueckzahl >= 1001) && (stueckzahl <= 2500)): return preis2; break;
[...]
}
开关(真){
case((stueckzahl>=500)&&(stueckzahl=1001)&(stueckzahl您可以将a与布尔值true
完美地结合使用,以便逐个重新评估您的案例
这样,您的代码保持干净:
功能auswertung(stueckzahl){
var preis1=0.77,
preis2=0.76,
preis3=0.73,
preis4=0.69,
preis5=0.67;
开关(真){
案例stueckzahl>=500&&stueckzahl=1001&&(stueckzahl=2501&&stueckzahl=5001&&stueckzahl=10001&&stueckzahl您可以完美地使用带有布尔值true
的a来逐个重新评估您的案例
这样,您的代码保持干净:
功能auswertung(stueckzahl){
var preis1=0.77,
preis2=0.76,
preis3=0.73,
preis4=0.69,
preis5=0.67;
开关(真){
如果stueckzahl>=500&&stueckzahl=1001&&stueckzahl=2501&&stueckzahl=5001&&stueckzahl=10001&&stueckzahl开关的工作方式如下
将开关表达式与不同的大小写值进行比较。如果比较结果为true,则执行大小写下的代码
您的开关表达式是stueckzahl
其中一个case表达式值是:((stueckzahl>=500)和&(stueckzahl=500)和&(stueckzahl=1001)和&(stueckzahl=2501)和&(stueckzahl=5001)和&(stueckzahl开关的工作方式如下
将开关表达式与不同的大小写值进行比较。如果比较结果为true,则执行大小写下的代码
您的开关表达式是stueckzahl
其中一个case表达式值是:((stueckzahl>=500)和&(stueckzahl=500)和&(stueckzahl=1001)和&(stueckzahl=2501)和&(stueckzahl=5001)和&(stueckzahl(stueckzahl>=500)和&(stueckzahl)您需要开关(true)
或if-else链。switch
将切换变量stueckzahl
的值与每个case
语句进行比较。因为stueckzahl
永远不等于true
或false
每次都会得到默认的块。您没有使用switch
c正确。(stueckzahl>=500)&(stueckzahl)您需要开关(true)
或if-else链。switch
将切换变量stueckzahl
的值与每个case
语句进行比较。因为stueckzahl
永远不等于true
或false
每次都会得到默认的块。您没有使用switch
c正确。在第一个if
语句之后,OP实际上也不需要再比较低端值。它只需要比较每个值段的上限。@Yuck这是一个很好的建议,谢谢。在第一个if
语句之后,我做了更改OP实际上不需要再比较低端值了也可以。它只需比较每个值段的上限。@Yuck这是一个好建议,谢谢。我已经做了更改。如果你在做返回,你不需要使用break。他使用了完全错误的switch语句。如果你在做返回,你不需要使用break。他使用了完全错误的switch语句+1,但是为什么呢值得一提的是,我发现以这种方式使用switch
是有误导性的。我认为最好只使用if..else
。@糟糕,它可以用许多不同的方式来完成。但是,对于这种特定的情况,switch语句很受欢迎。auswertung()
函数逐个重新计算表达式
并在第一个true
案例中返回正确的“preis”..Just clean;)@yack使用开关
的另一个优点是特别避免使用多个if(){…}else if(){…}
statements+1但是为了它的价值,我发现以这种方式使用switch
是有误导性的。我认为最好只使用if..else
来代替。@是的,它可以用许多不同的方式来完成。但是,对于这种特定的情况,switch语句非常出色。auswertung()
函数逐个重新计算表达式
并返回正确的
switch (true) {
case ((stueckzahl >= 500) && (stueckzahl <= 1000)): return preis1; break;
case ((stueckzahl >= 1001) && (stueckzahl <= 2500)): return preis2; break;
[...]
}
if ((stueckzahl>=500) && (stueckzahl <= 1000)) {
return preis1;
}
if ((stueckzahl >= 1001) && (stueckzahl <= 2500)) {
return preis2;
}
if ((stueckzahl >= 2501) && (stueckzahl <= 5000)) {
return preis3;
}
if ((stueckzahl >= 5001) && (stueckzahl <= 10000)) {
return preis4;
}
if ((stueckzahl >= 10001) && (stueckzahl <= 30000)) {
return preis5;
}
return preis1;