我遇到了一个案例,我在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?
谢谢。
只需使用|
(Bitwise OR
(:
function first(){
console.log("First function");
return true;
};
function second(){
console.log("Second function");
return false;
};
console.log(!!(first()|second()));
阅读更多关于JavaScript中的逻辑运算符(||
,!!
等(和按位运算符(|
,&
等...(的信息。
您可以通过收集值来调用所有函数,然后检查值。
function first(){
console.log("First function");
return true;
}
function second(){
console.log("Second function");
return false;
}
console.log([first(), second()].some(Boolean));
function logicalOr(a, b) {
return a || b;
}
。
logicalOr(first(), second());
如果你用函数调用它,它们在到达 or 语句之前就被评估了。
您可以使用按位或运算符并将结果转换为布尔值
let a = () => {console.log("a"); return true}
let b = () => {console.log("b"); return false}
console.log(!!(a()|b()))
这输出
一个
乙
真
你在c#中使用按位逻辑运算符,在JavaScript中使用条件 OR 运算符。
使用按位逻辑运算符,该运算符按预期计算和输出。
console.log(!!(first()|second()));
function first(){
console.log("First function");
return true;
};
function second(){
console.log("Second function");
return false;
};
console.log(!!(first() | second()));
改用这个