我在Javascript中编写了多个if语句。我有3个(或更多)条件,我只想在所有这3个条件都成立的情况下做某事()。如果这3个中只有一个是假的,我想做SomethingElse()。我认为我的代码是正确的,但我的问题在另一个层面上。 如果我想知道我的陈述是错误的,我该怎么办? 例如:condition1 = true,condition2 = true,condition3 = false。
if (condition1 && condition2 && condition3) {
doSomething();
} else {
doSomethingElse();
};
我以为我可以在else部分添加另一个if语句。
if (condition1 && condition2 && condition3) {
doSomething();
} else {
if (condition1 == false) {
doWhatIDoWhenC1isFalse();
};
};
这是正确的方法吗?有没有其他方法可以做到这一点?也许更快的方式! 感谢您的帮助,对我好,这是我在Javascript上的第二天:)
答案 0 :(得分:2)
由于条件是互斥的,因此您可以在不嵌套的情况下使用else if
。
if (condition1 && condition2 && condition3) {
doSomething();
} else if (!condition1) {
doWhatIDoWhenC1isFalse();
}
// add more else-if conditions as needed
如果您的一个条件一次只能是假的(或者如果您不注意其中两个是假的)那么您可以只有三个else-if子句并单独检查每个条件。如果您确实需要分别处理两个条件为假的情况,那么对于每个组合,您都需要一个else-if。如果是这种情况,请密切关注您列出的订单。检查两个条件是否都为假的情况应该在您只检查一个条件的情况之前。
答案 1 :(得分:1)
if (condition1 && condition2 && condition3) {
doSomething();
}else if (!condition1){
doWhatIDoWhenC1isFalse();
}else if (!condition2){
doWhatIDoWhenC2isFalse();
}else{
doWhatIDoWhenC3isFalse();
}
你必须做一些事情。无法干净地获得失败的表达。
答案 2 :(得分:0)
如果您想要任何一个条件为假,您可以这样做:
if ((!condition1 && condition2 && condition3)||
(condition1 && !condition2 && condition3)||
(condition1 && condition2 && !condition3))
{
doSomethingElse();
} else {
doSomething();
};
答案 3 :(得分:0)
可以是:
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();
}