7

我遇到了一个案例,我在 JavaScript 或表达式中运行了这两个函数:

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

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

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

在这种情况下,它将输出:

“第一个功能”

真的

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

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

这将输出:

在这种情况下,它将输出:

“第一个功能”

“第二个功能”

真的

如果不事先运行表达式,我似乎找不到任何关于如何在 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# 逻辑 OR?

谢谢。

4

6 回答 6

10

只需使用|Bitwise OR):

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

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

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

阅读更多关于JavaScript 中的逻辑运算符||,!!等...)和位运算符|, &, 等...)。

于 2019-09-04T08:44:31.007 回答
4

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

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

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

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

于 2019-09-04T08:44:02.783 回答
2
function logicalOr(a, b) {
   return a || b;
}

...

logicalOr(first(), second());

如果你用他们在到达 or 语句之前评估的函数调用它。

于 2019-09-04T08:45:40.427 回答
2

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

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

这输出

一个

b

真的

于 2019-09-04T08:54:05.630 回答
1
function first(){
    console.log("First function");
    return true;
};

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

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

// 改为使用这个

于 2019-09-04T08:52:52.150 回答
1

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

使用按位逻辑运算符评估两者并按预期输出。

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

于 2019-09-04T08:48:27.410 回答