有什么方法可以确定javascript中哪个或哪个陈述是真的?

时间:2013-08-14 08:39:36

标签: javascript jquery

所以说我有一个if语句:

if(a=='' || b==''){

    //which is true?
}

是否可以在不执行switch语句或其他if语句的情况下确定哪条语句满足if语句?

6 个答案:

答案 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

}