9
var t = "TEST";
switch(t){
    case !"TEST": /* <- does not work. Can you check if t does NOT contain a string? */
        alert("t != TEST");
    break;
}

你能用 switch 语句做到这一点吗?

4

5 回答 5

10

你也可以这样做:

var str = "TEST";

switch (true) {
    case (str !== "TEST") :
        alert("str !== TEST");
        break;
    case (str === null) :
        alert("str is null");
        break;
    default:
        alert("default trigger");
}
于 2013-10-29T12:50:53.650 回答
5

你可以使用如果。如果您更喜欢切换,请使用“默认”大小写和 if 条件,例如

default:
    if(n == -1){
        //Your code
    }
    break;
于 2013-10-28T13:28:34.480 回答
3

你可以使用 typeof:

<script>
        var t =((typeof "Test")=='string')?true:false;
        switch(t){
            case false:
                alert("t != TEST");
                break;
        }
</script>
于 2013-10-28T13:30:03.297 回答
3

case陈述总是寻找真实的。由于您实际上想检查变量是否是字符串(正如我在代码中的注释中读到的那样),因此这种方法可能适合您:

var t = "TEST";
switch(typeof t){
    case "string":
    break;
    default:
        alert("t is not a string");
    break;
}

编辑
如果您的真实代码中有更多案例,也许下面的代码可以完成这项工作?

var t = "TEST";
switch(t){
    case t:
        if ("string" != typeof t) {
            alert("t is not a string");
            break;
        }
    case "TEST":
        alert("case 2");
        break;
    case "something_else":
        alert("case 3");
        break;
}

这是一个示例小提琴:http: //jsfiddle.net/Rz7Sf/。将t变量值替换为整数,您应该会看到正确的警报。

于 2013-10-28T13:30:10.333 回答
1

比方说:

var t = "TEST";
switch(t){
    case "TEST": 
        break;
    default:
        alert("This is the case you want");
        break;
}
于 2013-10-28T14:32:56.420 回答