避免Javascript中带有逻辑的if语句的最佳方法

避免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(

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