0

这只是关于条件的基本编程问题if。假设我有这样的事情:

if(a == 1 || a == 2 || a == 3)
{
   var $myvar = 10;
   // do stuff if the value of a is either 1, 2 or 3
}

if(a == 1)
{
   var total = $myvar + 1;
   // do stuff if the value of a is 1
}

if(a == 2 || a == 3)
{
   var total = $myvar + 1;
   // do stuff if the value of a is either 2 or 3
}

很清楚我在上面的代码中要做什么。如您所见,我们在这里有一些常见的条件(例如,a == 1在 3 个条件中的 2 个中是常见的)。另外,请注意我有一个变量,我只想在其他两个条件下访问它$myvar时才声明它。a == 1 || a == 2 || a == 3任何人都可以想到另一种(可能更清洁)的方法吗?

4

6 回答 6

4
if(a == 1 || a == 2 || a == 3)
{
   var $myvar = 10;
   // do stuff if the value of a is either 1, 2 or 3
  if(a == 1)
  {
     var total = $myvar + 1;
     // do stuff if the value of a is 1
  }
  else
  {
     var total = $myvar + 1;
     // do stuff if the value of a is either 2 or 3
  }

}

或者更好

if(a == 1 || a == 2 || a == 3)
{
   var $myvar = 10;
   // do stuff if the value of a is either 1, 2 or 3
   var total = $myvar + 1;

  if(a == 1)
  {
     // do stuff if the value of a is 1
  }
  else
  {
     // do stuff if the value of a is either 2 or 3
  }

}

两者之间的差异很小,如果它使代码更清晰,您可能会使用第一个 - 此外,某些语言会根据变量的声明位置更改变量的范围,这可能会影响您的使用。

于 2012-11-14T18:16:08.087 回答
2

在不知道具体要求的情况下,您确实不需要做太多的事情来改进它。

根据您的要求:

你可以试试switch语句

switch(a)
{
    case 1:
    case 2:
    case 3:
        //logic for if a is 1, 2, or 3
    break;
    default:
        //if a is something else
    break;
}

if(a == 2 || a == 3)

可以改为

else if(a == 2 || a == 3)

但这主要是装饰性的,对运行时的影响很小。

于 2012-11-14T18:18:01.550 回答
0

您可以尝试以下方法:

if(a == 1 || a == 2 || a == 3)
{
   var $myvar = 10;
   // do stuff if the value of a is either 1, 2 or 3

   if(a == 1)
    {
       var total = $myvar + 1;
       // do stuff if the value of a is 1
    }

    if(a == 2 || a == 3)
    {
       var total = $myvar + 1;
       // do stuff if the value of a is either 2 or 3
    }
}

这样,$myvar外部 if 块内的所有内容都可以访问该变量。我不完全确定 PHP 的范围规则,但在 c++(该语言最初是用它标记的)中,$myvar将无法在 if 块之外访问。

但是,在 Javascript 中,由于其范围规则,仍然$myvar 可以在 if 块之外访问。

于 2012-11-14T18:16:56.570 回答
0

倒着做:

if (a < 1 || a > 3)
{ 
   return;
}
else
{
   var $myvar = 10;
   if (a == 1)
   {
      var total = $myvar + 1;
      // do a == 1 stuff 
   }
   else
   {
      total = $myvar + 1;
      // do a == 2 or a == 3 stuff
   }
}
于 2012-11-14T18:30:43.420 回答
0
var $myvar=0,total=0;
switch(a){
    case 1:
    case 2:
    case 3:
        $myvar = 10;
    case 1:
        total =$myvar + 1;
        break;
    case 2:
    case 3:
        total = $myvar + 1;
        break;
}
于 2012-11-14T18:20:17.257 回答
0
switch (a){
    case 1:
         do stuff;
         //DONOTBREAK HERE
    case 2:
    case 3:
         if(a== 2 || a == 3){
              //do stuff exclusive to 2 and 3
         }
         //do stuff universal to 1,2,3
         break;
    default:
       //failing case
}
于 2012-11-14T18:21:40.180 回答