高级开关盒

问题描述 投票:3回答:5

我想在开关盒中使用变量。举个例子,做不到。你能帮忙吗?

switch(basket,pay){
   case true, true:
       blah blah...
   break;
   case false,true:
       blah blah..
   break;
   case false, false:
      blah blah...
   break;
}
javascript switch-statement
5个回答
7
投票

您正在寻找的是flags and bitmasks。基本上,您可以在相同的变量中存储多个伪布尔值,并且可以访问它们的复合条件。这样做的好处是您可以将多个属性组合到一个变量中。当您需要跟踪更多布尔属性时,这尤其好用。

var FLAG_BASKET = 0x1; // 0001  
var FLAG_PAY = 0x2; // 0010

//set them both to pseudo-true
var flags = FLAG_BASKET | FLAG_PAY;

switch (flags){
  case 0x0://both are false
  case 0x1://basket is true, pay is false
  case 0x2://basket is false, pay is true
  case 0x3://both are true
}

Fiddled


3
投票

老实说,您的switch语句似乎没有必要。您应该可以使用一些简单的if


2
投票

您编写的是合法的JavaScript,但未达到您的期望。


2
投票

原始问题可以


0
投票

使用此解决方案,您可以为开关提供多个参数:

© www.soinside.com 2019 - 2024. All rights reserved.