Javascript 一个switch语句中的多个表达式

Javascript 一个switch语句中的多个表达式,javascript,switch-statement,processing.js,Javascript,Switch Statement,Processing.js,这是我第一次在Javascript中使用switch语句。是否有一种方法可以在一个switch语句中计算多个条件,如下所示: var i = 1; switch(i && random(1)<0.3) { case (1): //code block break; case (2): //code block } var i=1; switch(i&&random(1)您可以这样做,但是switch语句将

这是我第一次在Javascript中使用
switch
语句。是否有一种方法可以在一个switch语句中计算多个条件,如下所示:

var i = 1;
switch(i && random(1)<0.3) {
    case (1):
        //code block
         break;
    case (2):
        //code block
} 
var i=1;

switch(i&&random(1)您可以这样做,但是switch语句将打开您提供的表达式的结果

如果表达式中有逻辑and(
&&
),则有两种可能的结果定义了
&&
的工作方式

  • 如果左侧表达式的计算结果为true,则表达式将等于第二部分的计算结果
  • 如果左侧表达式的计算结果为false,则整个表达式的计算结果将为false
  • 您可以在

    上阅读有关switch语句的更多信息。您可以执行以下操作:

    var i = 1;
    switch((i==1) + (Math.random(1)<0.3)*2) {
        case 0:
            //code block when neither is true
             break;
        case 1:
            //code block when only i == 1
             break;
        case 2:
            //code block when only random(1)<0.3
             break;
        case 3:
            //code block when both i==1 and random(1)<0.3
            break;
    } 
    

    可以这样编写switch语句:

    switch (true) {
      case a && b:
        // do smth
        break;
      case a && !b:
        // do other thing
        break;
    }
    
    唯一需要记住的是,&&不仅可以返回布尔值,而且可以返回任何其他值,如果“a”(在上面的代码段中)解析为某个假值。如果“b”是字符串,则a&&b(其中a为假)应返回字符串。

    因此,当您使用此模式时,请始终确保&&expression的右侧解析为布尔值。

    这样,如果两个条件都为真,代码块将执行:两个条件?何时只执行第一个条件,何时只执行第二个条件,何时不执行任何条件?您可能希望使用
    +
    而不是
    &
    实际执行y
    &&
    可以计算为非布尔结果,但是是的,当前脚本确实永远不会匹配任何案例。我想我必须说
    案例(5&&true)
    @Roman同样适用于上述两点中描述的case语句块。我明白您对多个布尔表达式求值为true或false的意思。但是还有什么布尔表达式呢?@Roman如果您阅读我答案中的数字1和2,您就会明白。&&如果&&为false。否则将返回右手的求值。false&&4->false,true&&5->5
    switch (true) {
      case a && b:
        // do smth
        break;
      case a && !b:
        // do other thing
        break;
    }