在多个条件 if 语句中什么条件为假

What condition is false in a multiple conditions if statement

我正在 Javascript 中编写多个 if 语句。我有 3 个(或更多)条件,只有当所有这 3 个条件都为真时,我才想 doSomething() 。如果这 3 个中只有一个是假的,我想做 SomethingElse()。我认为我的代码是正确的,但我的问题在另一个层面上。 如果我想知道我的陈述在哪种情况下是错误的怎么办? 例如:条件 1=真,条件 2=真,条件 3=假。

if (condition1 && condition2 && condition3) {
  doSomething();
} else {
  doSomethingElse();
};

我想我可以在 else 部分再放一个 if 语句。

if (condition1 && condition2 && condition3) {
  doSomething();
} else {
  if (condition1 == false) {
    doWhatIDoWhenC1isFalse();
  };
};

这是正确的方法吗?还有其他方法吗?也许更快的方法! 感谢您的帮助,对我好一点,这是我在 Javascript 的第二天:)

由于条件互斥,可以直接使用else if而不嵌套。

if (condition1 && condition2 && condition3) {
    doSomething();
} else if (!condition1) {
    doWhatIDoWhenC1isFalse();
}
// add more else-if conditions as needed

如果一次只能有一个条件为假(或者如果您不关心其中两个条件是否为假),那么您可以只使用三个 else-if 子句并分别检查每个条件。如果您确实需要分别处理两个条件为假的情况,则每个组合都需要一个 else-if。如果是这种情况,请密切注意您列出它们的顺序。检查两个条件是否都为假的情况应该在只检查一个条件的情况之前出现。

if (condition1 && condition2 && condition3) {
  doSomething();
}else if (!condition1){
  doWhatIDoWhenC1isFalse();
}else if (!condition2){
  doWhatIDoWhenC2isFalse();
}else{
  doWhatIDoWhenC3isFalse();
}

你必须按照这个思路做点什么。无法清楚地获取失败的表达式。

如果有一个条件为假,你可以走这条路:

if ((!condition1 && condition2 && condition3)||
   (condition1 && !condition2 && condition3)||
   (condition1 && condition2 && !condition3)) 
{
   doSomethingElse();      
} else {
  doSomething();
};

可以是:

var x = []; /* an array that will take expressions number that result true */

if(condition1) x.push(1);
if(condition2) x.push(2);
if(condition3) x.push(3);


if( x.length == 2 ){ /* if two conditions got true */
    doThingForTwoTrue();
}
if( x.length == 3 ){ /* if three conditions got true */
    doThingForThreeTrue();
}
if( x.indexOf(1) !== -1 ){ /* if condition1 got true */
    doThingOne();
}