所以说我有一个if语句:
if(a=='' || b==''){
//which is true?
}
是否可以在不执行switch
语句或其他if
语句的情况下确定哪条语句满足if语句?
答案 0 :(得分:1)
正如其他人所说,你必须分别测试条件,但你可以混合世界。
var test1 = 1 == 1; // true
var test2 = 2 == 1; // false
if (test1 || test2) {
// If either conditions is true, we end up here.
// Do the common stuff
if (test1) {
// Handle test1 true
}
if (test2) {
// Handle test2 true
}
}
答案 1 :(得分:1)
您可以定义一个令牌来存储条件为真:
var token = null;
if ((a == '' && (token = 'a')) || (b == '' && (token = 'b'))) {
// Here token has an 'a' or a 'b'. You can use numbers instead of letters
}
我认为这是做你想做的最简单的方法。
答案 2 :(得分:0)
不,您已明确询问其中一项或两项是否属实。如果没有其他条件,哪些的子表达式是真的,就没有办法解决。
如果您对基于哪种行为的不同行为感兴趣,您应该将它们与可能常见的位分开,例如
either = false;
if (a == ' ') {
doActionsForA();
either = true;
}
if (b == ' ') {
doActionsForB();
either = true;
}
if (either) {
doActionsForAorB();
}
答案 3 :(得分:0)
如果你关心这两个条件中的哪一个是真的,唯一的方法就是分别测试它们,例如
if(a==''){
// ...
}
else if(b=='') {
// ...
}
有时,特别是在更复杂的条件下,如果您存储每个条件的结果并在以后重复使用它会有所帮助:
var isFoo = a == '';
var isBar = b == '';
// You can now use isFoo and isBar whenever it's convenient
答案 4 :(得分:0)
简单的解决方案:
if ((ia=(a=='')) || (b=='')) {
// ia indicate whether the boolean expression a have been true.
// ia -> a has been true, b may have, !ia -> b has been true, a has not
}
简单解决方案中没有ib
,因为快捷方式评估不会总是设置它。
以迎合快捷方式评估尝试:
if (((ia=(a=='') || (ib=(b=='')) && ((ib=(b=='')) || (ia=(a==''))) {
// ia, ib indicate whether the corresponding boolean expressions have been true
}
答案 5 :(得分:0)
if(a ==''|| b ==''){
var x = a || B;
//如果a是''(falsy)x将是b,否则a
}
var phone="";
var email="something";
if(phone=='' || email==''){
var x= (phone) ? 'phone':'email';
console.log(x); //email
}