我需要执行&&语句的两端,但是如果第一部分返回false,则不会发生这种情况。例子:

function doSomething(x) {
    console.log(x);
}

function checkSomething(x) {
    var not1 = x !== 1;
    if (not1) doSomething(x);

    return not1;
}

function checkAll() {
    return checkSomething(1)
        && checkSomething(3)
        && checkSomething(6)
}

var allValid = checkAll(); // Logs nothing, returns false

这里的问题是doSomething(x)应该记录3和6,但是因为checkSomething(1)返回false,所以不会调用其他检查。 运行所有检查并返回结果的最简单方法是什么?

我知道我可以将所有值保存在变量中并随后进行检查,但是当我进行大量检查时,这看起来并不干净。我正在寻找替代品。

最佳答案

使用单个&。那是一个按位运算符。它将执行所有条件,然后返回结果的按位求和。

 function checkAll() {
    return checkSomething(1)
      & checkSomething(2)
      & checkSomething(3)
 }

关于javascript - 如何避免JavaScript中的短路评估?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35100962/

10-09 15:38