【问题标题】:Check both conditions in an if statement even if the first one is false检查 if 语句中的两个条件,即使第一个条件为假
【发布时间】:2014-01-05 02:28:59
【问题描述】:

我在 if 块中有两个语句,它们都链接到将返回布尔值的函数。两个语句都必须为真,代码才能运行,但我希望它们都被检查,即使第一个是假的。相关代码:

if (myFunc(one) && myFunc(two)) {
    //execute
}

myFunc 会在返回 false 之前执行一些代码,但是如果一个返回 false,此代码不会在两个上执行。

我得到了这个工作,但感觉就像一个黑客:

if ((myFunc(one) && myFunc(two)) || (myFunc(two) && myFunc(one))) {
    //execute
}

有人有更好的解决方案吗?谢谢!

【问题讨论】:

  • IMO 如果条件有副作用,那就不好了。逻辑运算符的短路行为通常并不重要,因为条件不应该有副作用,因此它们是否被执行应该是无关紧要的。如果您想产生副作用,请在 if 之外显式执行函数,而不是通过短路运算符链接。

标签: javascript if-statement


【解决方案1】:

另一种方式:

var first = myFunc(one),
    second = myFunc(two);

if (first && second) {
    //execute
}

在这种情况下,两者都将首先执行,然后检查非假值。

【讨论】:

  • +1 如果要执行两个函数,则执行两个函数。就是这么简单。
  • 这行得通,谢谢!有人能解释一下如果 first 是假的,如何执行第二个?
  • @user Uhm... 因为它明确地执行了myFunc(one)myFunc(two)...?!
【解决方案2】:

使用 & 运算符

看看这个example

function a (){
    console.log(1);
    return true;
}

function b (){
    console.log(2);
    return false;
}

if(b() & a() == true){
console.log('asas');
}

【讨论】:

    猜你喜欢
    • 2015-07-12
    • 2018-12-19
    • 2014-10-13
    • 2013-05-12
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多