Javascript 所有if语句的Else语句
这是为所有if语句创建else语句的好方法吗Javascript 所有if语句的Else语句,javascript,Javascript,这是为所有if语句创建else语句的好方法吗 function myFunction() { var a = 4; var b = 5; var c = 6; var x = 0; if (a > 2) { // Result 1 } else { x = x + 1; } if (b > 3) { // Result 2 } else { x = x + 1; } if (c &g
function myFunction()
{
var a = 4;
var b = 5;
var c = 6;
var x = 0;
if (a > 2)
{
// Result 1
}
else
{
x = x + 1;
}
if (b > 3)
{
// Result 2
}
else
{
x = x + 1;
}
if (c > 4)
{
// Result 3
}
else
{
x = x + 1;
}
if (x >= 3)
{
// All results are false
}
}
有可能这样做吗?所有if语句周围的()是将所有if语句分组的失败尝试:
function myFunction()
{
var a = 4;
var b = 5;
var c = 6;
(
if (a > 2)
{
// Result 1
}
if (b > 3)
{
// Result 2
}
if (c > 4)
{
// Result 3
}
)
else
{
// All results are false
}
}
这样做:
var a = 4;
var b = 5;
var c = 6;
var x = 0;
if (a > 2)
{
// Result 1
}
if (b > 3)
{
// Result 2
}
if (c > 4)
{
// Result 3
}
if (a <= 2 && b <= 3 && c <= 4) // your else
{
}
var a=4;
var b=5;
var c=6;
var x=0;
如果(a>2)
{
//结果1
}
如果(b>3)
{
//结果2
}
如果(c>4)
{
//结果3
}
如果(a您的原始逻辑有点颠倒,这使您的代码复杂了很多。您的逻辑是“计算这些分支没有被执行的次数,如果所有(3)个分支都没有执行,请执行此操作”
您应该看到,下面的代码实际上是类似的,除了我刚刚设置了一个标志,如果在这些分支中执行了if
分支,那么就没有else
分支,也没有任何计数
只有在没有执行之前的分支时,才会执行最终操作
function myFunction(a, b, c) {
var actionTaken = false
if (a > 2) {
// action 1
actionTaken = true;
}
if (b > 3) {
// action 2
actionTaken = true;
}
if (c > 4) {
// action 3
actionTaken = true;
}
if (!actionTaken) {
// none of the above happened
}
}
你不应该一遍又一遍地使用var x
,也没有第二种解决方案那样的语法……你想每次检查只进入else一次还是一次?我想你想要if(){}else if(){else if(){}else{else}
如果只有一种情况是真的。但是如果所有情况都是真的,那么答案取决于你是否需要对方开火。这是使用的方法之一。if(x){}else if(y){…}else{}
@SamR No,这不是切换的情况,它取决于是否“结果”这意味着函数返回,使得三个if
分支相互排斥。这一点上的问题还不清楚。我认为这是“OK”,但它也违反了“不要重复你自己”原则。@Alnitak我明白了,也明白了。但是如果else和switch不起作用。事实上,它们不起作用,但要说明是否有任何早期的分支是在不需要重复的情况下使用的(或者在您的情况下是否定的)原始谓词。@JoshuaBakker我想到了这个解决方案,但是如果我有1000条if语句呢?你的最后一条if语句必须再次执行之前的所有测试。这可能是个问题吗?这就是为什么我引入了x变量,但这意味着每个if语句都有一条else语句。我不知道哪一条权衡是最好的。是的,没错,你的答案会更好