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