我如何才能继续'如果'语句来比较作为参数的多个函数返回值

How can I continue an 'if' statement to compare multiple function return values as parameters?

本文关键字:参数 返回值 函数 比较 语句 继续 如果      更新时间:2023-09-26

我有一个函数,它试图确定一个函数的结果是否为true,第二个函数的结论是否为true。

function foo() {
    var result = false;
    if (/*condition is true*/) result = true;
    return result;
}
function bar() {
    var result = false;
    if (/*condition is true*/) result = true;
    return result;
}
if (foo() && bar()) {
    // Both are true
}

我的问题是,如果第一个函数返回false,它就不会继续"if"语句并调用第二个函数或对它们进行比较
即使第一个函数调用返回false,我如何让"if"语句继续?

Javascript将在知道结果后立即短路if,而不计算其余项。如果你想保证foo()bar()总是被调用,你可以这样做:

var fooResult = foo();
var barResult = bar();
if (fooResult && barResult) {
    // Both are true
}

您正在使用&&,如果第一个条件失败,它将不会执行第二个条件。

如果您想同时执行这两个函数,请先执行这些函数,并将结果存储在变量中,然后进行比较。

function foo() {
    var result = false;
    if (/*condition is true*/) result = true;
    return result;
}
function bar() {
    var result = false;
    if (/*condition is true*/) result = true;
    return result;
}
var firstResult = foo(),
   secondResult = bar();
   if(firstResult && secondResult) {
   }

最简单的选择是:

if (foo() & bar()) {
    // Both are true
  }

只需放置单个&而是两个&。短路AND(&&)从不计算if语句的第二个参数,若第一个参数为false。但是逻辑AND(&)将计算第二个参数,即使第一个参数为false。