我正在尝试运行一个代码块,它是一系列IF ELSE IF语句,用于检查某些条件是否为真。
if (2 > 1) {
return true;
}
else if (3 > 1) {
return true;
}
else if (4 > 1) {
return true;
}
else {
alert('Not all conditions are true')
}
它工作得很好,但我想在最后添加一个函数,如果所有条件都是真的,在下面的代码中我添加了函数,但现在它似乎在运行函数时没有首先检查所有条件
if (2 > 1) {
return true;
}
else if (3 > 1) {
return true;
}
else if (4 > 1) {
return true;
}
else {
alert('Not all conditions are true')
}
// Run this function after checking all the conditions are true
allConditionsTrue();
我想我对函数应该放在哪里感到困惑。
非常感谢您的帮助:(
对于任意计数的条件,如果前一个条件是false
,下一个条件为true
,则立即退出,如果出现someFalse
值,则可以为状态取一个变量。
检查完所有条件后,检查someFalse
并返回'Not all conditions are true'
。
最后,很明显,所有条件都是true
,在这种情况下可以调用一个函数。
function check(value) {
function allConditionsTrue() {
console.log('All conditions are true');
}
let someFalse = false,
conditions = [value < 2, value < 3, value < 4],
fn = c => c ? someFalse : !(someFalse = true);
if (conditions.some(fn)) return true;
if (someFalse) {
console.log('Not all conditions are true');
return false;
}
allConditionsTrue();
return true;
}
console.log(1, check(1));
console.log(2, check(2));
console.log(3, check(3));
console.log(4, check(4));
看看&;(AND(和||(OR(运算符:
if (2>1 && 3>1 && 4>1) {
allConditionsTrue();
return true;
} else {
alert('not all conditions true');
}
您将函数调用置于所有检查之外,因此它与条件无关。你可以给它自己的if块样:
if (2 > 1 && 3 > 1 && 4 > 1) {
allConditionsTrue()
}
或者,如果你不想重写所有的检查,那么你可以创建一个数组来保存它们各自的值,比如
let conds = [false, false, false]
if (2 > 1) {
conds[0] = true
}
if (3 > 1) {
conds[1] = true
}
if (4 > 1) {
conds[2] = true
}
if (!conds.some(v => !v)) { // all are true
allConditionsTrue()
}
if (conds.some(v => v)) {
return true
} else {
alert('Not all conditions are true')
}
编辑:根据评论的建议进行更正
编辑2:改进