JavaScript 中的逻辑或

Logical OR in JavaScript

我 运行 遇到 运行 两个函数都在 JavaScript 或表达式中的情况:

function first(){
    console.log("First function");
    return true;
};

function second(){
    console.log("Second function");
    return false;
};

console.log(!!(first()||second()));

在这种情况下它会输出:

"First function"

true

在 C# 中,逻辑 (|) OR 不同于条件或 (||),后者将确保两个表达式都被计算:

Func<bool> first = () => { Console.WriteLine("First function"); return true; };
Func<bool> second = () => { Console.WriteLine("Second function"); return false; };
Console.WriteLine(first() | second());

这将输出:

在这种情况下它会输出:

"First function"

"Second function"

true

我似乎无法找到任何关于如何在 JavaScript 中实现相同逻辑的信息,而无需事先 运行 表达:

function first(){
    console.log("First function");
    return true;
};

function second(){
    console.log("Second function");
    return false;
};

var firstResult = first();
var secondResult = second();

console.log(firstResult||secondResult);

有没有办法在 JavaScript 中实现 C# 逻辑或?

谢谢。

您可以通过收集值调用所有函数,然后检查值。

function first(){
    console.log("First function");
    return true;
}

function second(){
    console.log("Second function");
    return false;
}

console.log([first(), second()].some(Boolean));

只需使用 | (Bitwise OR):

function first(){
    console.log("First function");
    return true;
};

function second(){
    console.log("Second function");
    return false;
};

console.log(!!(first()|second()));

阅读 JavaScript 中有关 logical operators (||, !!, etc...) and bitwise operators|& 等...)的更多信息。

function logicalOr(a, b) {
   return a || b;
}

...

logicalOr(first(), second());

如果您使用它们在到达 or 语句之前求值的函数来调用它。

您在 c# 中使用了按位逻辑运算符,在 JavaScript 中使用了条件或运算符。

使用按预期计算和输出的按位逻辑运算符。

console.log(!!(first()|second()));

function first(){
    console.log("First function");
    return true;
};

function second(){
    console.log("Second function");
    return false;
};

console.log(!!(first() | second()));

// 改用这个

您可以使用按位或运算符并将结果转换为布尔值

let a = () => {console.log("a"); return true}
let b = () => {console.log("b"); return false}
console.log(!!(a()|b()))

这输出

a

b

true