我需要执行&&
语句的两面,但如果第一部分返回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
,其他支票不会被调用。 运行所有检查并返回结果的最简单方法是什么?
我知道我可以保存变量中的所有值并随后检查它们,但是当我进行大量检查时,这看起来并不是很干净。我正在寻找替代方案。
答案 0 :(得分:10)
使用单身&amp ;.这是一个按位运算符。它将执行所有条件,然后返回结果的按位总和。
function checkAll() {
return checkSomething(1)
& checkSomething(2)
& checkSomething(3)
}
答案 1 :(得分:5)
您可以将比较结果相乘并将其转换为布尔值。
function checkSomething(x) {
var not1 = x !== 1;
if (not1) alert(x);
return not1;
}
function checkAll() {
return !!(checkSomething(1) * checkSomething(2) * checkSomething(3));
}
document.write(checkAll());
或采取一些数组方法:
function checkAll() {
return [checkSomething(2), checkSomething(2), checkSomething(3)].every(Boolean);
}