在if语句中使用按位或运行函数

时间:2015-10-02 07:45:01

标签: javascript

我有一种情况,我想确保在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

这是按位或运算符的正确用法吗?我无法在任何地方找到这种用法。

1 个答案:

答案 0 :(得分:4)

  

这是bitwise或operator的正确用法吗?

有效,因为你的函数会返回值(在你的情况下是布尔值),可以成功强制转换为有用的数值(false => 0,{ {1}} => true),可以一起进行OR运算,当OR一起运行时,会给你一个可以有效强制回布尔值的值。

至于正确,好吧,如果我在代码中看到它,我倾向于认为这是一个错字,而你打算写1。你至少必须对其进行评论,以表明避免短路的意图。

但它完全有效,并没有突破任何东西的边缘,这是明确指定的行为。