gpt4 book ai didi

javascript - 逻辑运算的快捷方式

转载 作者:行者123 更新时间:2023-11-30 09:53:36 25 4
gpt4 key购买 nike

我只是想知道,是否有逻辑运算符(&&||)的快捷方式。比如如果我想做 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 = 00 是 false,但这看起来更像是 hack,想知道是否有更好的方法做这样的任务?

注意:

我已经尝试过 valid = f1() && f2() && f3 && f4();,但是在这种方法中,如果任何函数返回 false,后续函数不被执行。

编辑 1 - Nina 的建议

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();

编辑 1

只是一个小更新。而不是做:valid = valid && func1()valid = func1() && valid。如果 valid 为 false,第一种方法将不会调用 func1

最佳答案

也许您使用数组。它调用所有函数。

function validate() {
return [f1(), f2(), f3()].every(Boolean);
}

或者以数组作为参数

function validate(a) {
return a.every(Boolean);
}

// call
xy = validate([f1(), f2(), f3()]);

关于javascript - 逻辑运算的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35149909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com