切换(Javascript和C#)和选择…大小写(VBScript)的语言语法-组合大小写

切换(Javascript和C#)和选择…大小写(VBScript)的语言语法-组合大小写,c#,javascript,vbscript,C#,Javascript,Vbscript,在VB中,如果我想合并一个case语句,它将如下所示 Select (somevalue) Case 1, 2, 3: Do Something End Select 在C#和Javascript中 switch (someValue) { case 1: case 2: case 3: //dosomething break; } 但是,这在Javascript中运行时没有错误 switch (someValue) { case 1, 2,

在VB中,如果我想合并一个case语句,它将如下所示

Select (somevalue)
  Case 1, 2, 3:
    Do Something
End Select
在C#和Javascript中

switch (someValue) {
  case 1:
  case 2:
  case 3:
     //dosomething
     break;
}
但是,这在Javascript中运行时没有错误

switch (someValue) {
  case 1, 2, 3:
     break;
}
但并没有达到预期的效果。它到底在做什么

我问这个问题的原因是,如果我将鼠标悬停在firebug中的1、2或3上,它会将手表指定为false。很明显,代码正在计算,但它在计算什么。

按从左到右的顺序计算两个操作数,返回最右边的操作数。所以,你基本上写了

switch (someValue) {
    case 3:
        break;
}

MDarwi打败了我但他还是成功了

<script type="text/javascript">
var x = 5;
switch (x)
{
  case 5, 6, 7:
    document.write("<b>This should work on 5, 6 or 7.</b>");
    break;
  case 0:
    document.write("<b>This should work on 0.</b>");
    break;
}
</script>

var x=5;
开关(x)
{
案例5、6、7:
写下(“这应该在5、6或7日起作用”);
打破
案例0:
document.write(“这应该适用于0”);
打破
}
…仅当x==7时写入第一个大小写。

您也可以使用:

switch(true) {
  case (somevalue <= 3): /* action if <= 3 */ break;
  case (somevalue <= 6): /* action if <= 6 */ break;
  //[etc]
  default: 'no action' 
}

另请参见

1,2,3
是一个计算结果为
3
的表达式。您应该期望案例1 | 2 | | | 3起作用,碰巧知道它为什么不起作用?@Kooilnc这不是同一件事,第一个操作数(1)的计算结果为“true ish”,因此返回的就是它。谢谢。我认为这是这个答案的一个书签。
Number.prototype.In = function(){
    var i = -1, args = arguments;
    while (++i<args.length){
         //use float for all numbers
         if (parseFloat(this) === parseFloat(args[i])){
         return true;
        }
    }
    return false;
};
switch(true) {
  case somevalue.In(1,2,3):   /* action if 1,2,3 */ break;
  case somevalue.In(6,10,14): /* action if 6,10,14 */ break;
  //[etc]
  default: 'no action' 
}