javascript - 如何避免 JavaScript 中的短路求值?

标签 javascript if-statement design-patterns boolean

我需要执行 && 语句的两边,但如果第一部分返回 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/

相关文章:

javascript - 在 CSV/Excel 文件的单元格上运行 javascript 函数

javascript - 是否有编译为 javascript 的 lisp?

javascript - if (true || true || false) 语句在 javascript 中是否为真?

php - 如何在 php 代码中的 css 类上应用 if-else?

design-patterns - 精心设计/高质量的开源软件

javascript - 使用 pg_search 提前输入 Bloodhound Rails

javascript - Angular JS 指令在 Visualforce(salesforce) 中不起作用?

php - 在 PHP 中使用 if 语句和 $GET 的正确方法

c++ - boost::asio 和事件对象

java - 在我的类中初始化以下实例的最佳方法是什么?