避免Javascript中带有逻辑的if语句的最佳方法
JavaScript中避免条件分支的最佳方法是什么:避免Javascript中带有逻辑的if语句的最佳方法,javascript,conditional,Javascript,Conditional,JavaScript中避免条件分支的最佳方法是什么: if(a && b) return doW(); if (a && !b) return doX(); if(!a && b) return doY(); if(!a && !b) return doZ(); 根据A/b的实际情况,稍微不同(但等效)的结构可能更具可读性。通过一些嵌套,您可以避免在a和b的所有组合上出现分支: if (a) { return b ? doW(
if(a && b) return doW();
if (a && !b) return doX();
if(!a && b) return doY();
if(!a && !b) return doZ();
根据A/b的实际情况,稍微不同(但等效)的结构可能更具可读性。通过一些嵌套,您可以避免在a
和b
的所有组合上出现分支:
if (a) {
return b ? doW() : doX();
}
else {
return b ? doY() : doZ();
}
或:
我认为条件逻辑在这里是理想的,所以没有必要避免if/else
逻辑。但是,如果您真的对某个方法感兴趣,下面是一个使用地图的有趣解决方案:
var map = {
true: {
true: doW,
false: doX
},
false: {
true: doY,
false: doZ
}
}
map[a][b]();
可以使用对象文字来存储函数
函数doW(){
console.log('do W');
}
函数doX(){
log('do X');
}
函数doY(){
console.log('do Y');
}
函数doZ(){
log('do Z');
}
变量fn={
“11”:道指,
“10”:doX,
“01”:多伊,
“00”:多兹
}
函数doFn(a,b){
fn[(a | 0)+‘+(b | 0)+‘]();
}
doFn(假、真)代码>我想我的意思是,不使用条件分支的另一种方法是什么?没有分支,你就不能做你想做的事情(因为你不能跳转)。您试图避免哪些特定的构造?这个问题可能有几乎无限多的“正确”答案,因此根据。underline.js为您提供了许多函数,可以帮助您避免过多的分支,特别是在数组方面。我正在考虑一个解决方案,你的函数将从基于布尔值的数组中选取。这太糟糕了,它被搁置了。然而,你不应该问一个“最好的方式”的问题,否则每个人都会跳到你身上。重新格式化,比如没有if语句或其他什么,我怎么做。你也可以去掉那些if/else,然后全速前进。不确定不习惯的人是否能读懂。你所做的看起来对每个人都很合适。
var map = {
true: {
true: doW,
false: doX
},
false: {
true: doY,
false: doZ
}
}
map[a][b]();