代码之家  ›  专栏  ›  技术社区  ›  ntan

javascript开关(真)

  •  14
  • ntan  · 技术社区  · 15 年前

    嗨,我正在处理Ajax JSON响应

    这是我的密码

    success: function (j) {     
        switch(true)
        {
            case (j.choice1):
    
                alert("choice2");
            break;
            case (j.choice2):
                    alert("choice2");
            break;
            default:
                alert("default");
            break;
        }
    }
    

    基于j是什么,我做我的行动,但我一直得到默认值。

    我已经警告了j值,并且得到了正确的结果。一些case(j.choice1)case(j.choice2)是如何工作的。

    我试过这个案子(J.Choice1!=“”)(J.选项2!=“”)但在这种情况下,我一直是第一选择。

    我错过了什么

    4 回复  |  直到 15 年前
        1
  •  27
  •   Manuco Bianco Madona    6 年前

    它对我有用:

    var a = 0, b = true;
        
    switch(true) {
        case a:
            console.log('a');
            break;
        case b:
            console.log('b');
            break;
    }

    然而, case 标签必须等于 true ,不是隐式的真。
    此外,只有第一个评估结果为 将执行。

        2
  •  4
  •   Oded    12 年前

    你需要阅读 switch 语句。不应打开常量值。

    似乎您需要使用if语句,因为您不想打开 j 价值观:

    success: function (j) {     
        if (j.choice1)
        {
            alert("choice1");
            break;
        }
    
        if (j.choice2)
        {
            alert("choice2");
            break;
        }
    
        alert("default");
      }
    }
    
        3
  •  3
  •   ntan    15 年前

    解决了的

    根据Slaks答案,我修改了以下代码

        if(j.choice1){ var choice1=true;} else { var choice1=false;}
        if(j.choice2){ var choice2=true;} else { var choice2=false;}
    
        switch(true)
        {
            case choice1:
                alert("choice1");
            break;
            case choice2:
                alert("choice2");
            break;
            default:
                alert("default");
            break;
        }
    

    所有人都在问为什么要转换而不是如果。

    switch将只执行1条语句,但如果出现任何错误,if可以执行超过1条的响应(例如,如果设置choice1和choice 2,if将同时警告这两个选项,但switch将只警告choice1)。

    预期作为选择的反应与银行的信用卡费用有关,所以我想确保只有一个行动可以执行

    谢谢大家

        4
  •  0
  •   Syntactic    15 年前

    在这种情况下,更好的方法可能是:

    success: function (j) {
        if(j.choice1 || j.choice2) {
            alert("choice2");
        } else {
            alert("default");
        }
    }