我目前正在開發一個值班輪換應用程式。我需要計算出哪個員工可以在每個月的每一天作業。這也必須“即時”更新,因為如果有人在第 1 天被分配作業,他/她例如不能在第 2 天作業。
是否有人可以在一天作業取決于多種條件。我的想法是,要有一個“控制器”功能來檢查是否有任何“條件”功能回傳 false = 這意味著該人當天不可用。
我喜歡通過簡單地將回傳值相乘的方法
const controller = (day, employee) => {
return (
cond1(day, employee) *
cond2(day, employee) *
cond3(day, employee) *
cond4(day, employee) *
cond5(day, employee)
)
}
因為 true == 1 和 false == 0 它在一個條件為 false 時立即回傳 0。但我認為這可能不是最有效的方法,因為它會檢查所有條件。我正在尋找一種在一個條件為假時立即回傳的方法。
我可以使用 if-else 但這會很快變得不可讀
uj5u.com熱心網友回復:
&&如果第一個值為 ,將短路false。試試這個:
function foo() {
console.log('called foo');
return false;
}
function bar() {
console.log('called bar');
return true;
}
foo() && bar()
輸出應該只是called foo. 短路意味著布爾運算式只會根據需要進行評估;如果左側&&為假,則運算式為假,右側不需要計算。請注意,這也發生在||,但以相反的方式發生:如果運算式的左側為true,則不計算右側。
如果所有函式都采用與您的示例所暗示的完全相同的引數,您可以使用[].every,它也可以通過提前結束迭代來“短路”。cond不過,對于您的具體示例,我會提醒您不要這樣做,因為即使其中一個函式采用不同的引數,它也會使事情變得難以維護。
[cond1, cond2, cond3, cond4, cond5].every((cond) => cond(day, employee))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473607.html
標籤:javascript 节点.js ecmascript-6 网络应用
