我只是想知道,逻辑运算符(&&
, ||
)。就像如果我想做类似的事情i = i + 10
, 我可以i += 10
我搜索这个的原因是因为我有一个验证函数,它分为几个函数。以下是模拟:
function f1(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f2(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f3(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f4(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function validate(){
var valid = true;
valid = valid && f1();
valid = valid && f2();
valid = valid && f3();
valid = valid && f4();
console.log(valid);
}
validate();
我努力了&=
function f1(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f2(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f3(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f4(){
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function validate(){
var valid = true;
valid &= f1();
valid &= f2();
valid &= f3();
valid &= f4();
console.log(valid);
}
validate();
现在这可以工作了,因为true & false = 0
and 0
是假的,但这看起来更像是一个黑客,想知道是否有更好的方法来完成这样的任务?
Note:
我努力了valid = f1() && f2() && f3 && f4();
,但在这种方法中,如果有任何函数返回false
,后续函数不执行。
编辑 1 - 尼娜的建议
function f1(){
console.log("f1");
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f2(){
console.log("f2");
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f3(){
console.log("f3");
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function f4(){
console.log("f4");
return Math.ceil(Math.random()*10) %2 === 0? true:false
}
function validate(){
var valid = true;
var validateFuncList = [f1,f2,f3,f4];
valid = validateFuncList.every(function (f) { return f(); });
console.log(valid);
}
validate();
现在这是一个很好的答案,但是如果有人返回,这个答案就会停止false
,这与valid = f1() && f2() && f3 && f4();
Edit 1
只是一个小更新。而不是做:valid = valid && func1()
do valid = func1() && valid
。第一种方法不会调用func1
如果有效的是false
.
也许您使用数组。它调用所有函数。
function validate() {
return [f1(), f2(), f3()].every(Boolean);
}
或使用数组作为参数
function validate(a) {
return a.every(Boolean);
}
// call
xy = validate([f1(), f2(), f3()]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)