1

我有一个开关盒,我想使用双管将 3 种不同的可能情况导向一个结果。

http://jsfiddle.net/qCA3G/

var type = "JPEG"

switch(type){
    case "PNG" || "JPG" || "JPEG":
    alert("works");
    break;
    default:
    alert("not working");
    break;
}

显而易见的事情是为每种文件类型制作一个单独的案例,但必须有一种更有效的方法,类似于我的尝试。

4

4 回答 4

7

这就是 switch 失败的原因:

switch(type){
    case "PNG":
    case "JPG": 
    case "JPEG": 
       alert("works");
       break;
    default:
       alert("not working");
       break;
}

但fallthrough是一个善变的野兽!当心可怕的被遗忘的 break 语句

switch(type){
    case "PNG":
    case "JPG": 
    case "JPEG": 
       alert("works");
    default: // forgot break BOTH ALERTS RUN!
       alert("not working");
       break;
}
于 2013-09-25T02:23:32.443 回答
2

这不是开关盒的工作方式。相反,您需要创建失败案例'(跳过 break 语句)。

var type = "JPEG"

switch(type){
    case "PNG":  
    case "JPG":  
    case "JPEG":  
       alert("works");
    break; //break here if you dont want to fall through again
    default:
       alert("not working");
    break;
}
于 2013-09-25T02:24:00.787 回答
1

是的,有:

        var type = "JPEG"

        switch (type) {
        case "PNG":
        case "JPG":
        case "JPEG":
            alert("works");
            break;
        default:
            alert("not working");
            break;
        }
于 2013-09-25T02:23:39.380 回答
1

尝试

var type = "JPEG"

switch(type){
    case "PNG":
    case "JPG":
    case "JPEG":
      alert("works");
    break;
    default:
      alert("not working");
    break;
}
于 2013-09-25T02:24:30.210 回答