javascript开关(true)

nta*_*tan 18 javascript

嗨,我正在尝试处理ajax json响应

这是我的代码

success: function (j) {     
    switch(true)
    {
        case (j.choice1):

            alert("choice2");
        break;
        case (j.choice2):
                alert("choice2");
        break;
        default:
            alert("default");
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

基于什么是j返回我做我的行动但我继续得到默认.

我已经提醒j值并且正确.有些情况(j.choice1)case(j.choice2)无效.

我试过案例(j.choice1!="")(j.choice2!="")但在这种情况下,我一直是第一选择.

我错过了什么

SLa*_*aks 31

这个对我有用:

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

但是,case标签必须等于true,而不是jut隐含的真实.
此外,只有第一个求值的情况true才会执行.

  • 如果您正在使用未明确求值为"true"的情况(例如String.match()),则可以使用`!! <condition>`快速,清晰地将每个case转换为布尔值. (6认同)