这只是关于条件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
时声明它,并在我的其他两个条件中访问它。任何人都可以想到另一种(可能更清洁)的方式吗?
答案 0 :(得分: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
}
}
两者之间的区别很小,如果它使代码更清晰,你可以使用第一个 - 也有些语言会根据声明的位置改变变量的范围,这可能会影响你使用它。
答案 1 :(得分: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)
但这主要是装饰性的,对运行时影响很小。
答案 2 :(得分: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
}
}
这样,外部if块内的所有内容都可以访问变量$myvar
。我不完全确定PHP的范围规则,但在c ++(该语言最初标记为)中,$myvar
将无法在if块之外访问。
但是,在Javascript中,由于其范围规则,$myvar
仍然可以在if-block之外访问。
答案 3 :(得分: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;
}
答案 4 :(得分: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
}
答案 5 :(得分: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
}
}