Javascript 开关/大小写始终返回默认值

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

我有以下问题:无论我尝试什么,我的函数总是返回默认值。当我使用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)&&(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;