我有一种情况,我想确保 if 语句中使用的部分或所有函数都运行,而不管该语句是否已经为真。我知道我可以为此使用按位运算符。
function test1() {
console.log('called1');
return true;
}
function test2() {
console.log('called2');
return false;
}
if(test1() | test2()) {
console.log('done');
}
// called 1
// called 2
// done
if(test1() | test2() | test1() || test2()) {
console.log('done');
}
// called 1
// called 2
// called 1
// done
但是,按位或运算符的用法是否正确?我在任何地方都找不到这种用法的描述。
最佳答案
Is this a correct usage for the bitwise or operator though?
它是有效的,因为您的函数返回值(在您的情况下为 bool 值)可以成功地强制转换为有用的数值 (false
=> 0
, true
=> 1
), 它们可以一起进行 OR 运算,并且当 OR 运算在一起时确实给你一个值,你可以有用地强制返回 bool 值。
至于正确,好吧,如果我在代码中看到它,我会倾向于认为这是一个拼写错误,而您打算改为编写 ||
。您至少必须对其进行评论以表明避免短路的意图。
但它是完全有效的,不会插入任何事情的发展,它是明确指定的行为。
关于javascript - 在 if 语句中使用按位或运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902612/