返回IF ELSE IF语句的函数



我正在尝试运行一个代码块,它是一系列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));

看看&amp;(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:改进

最新更新