在Javascript

时间:2016-11-02 16:54:59

标签: javascript conditional

JavaScript中避免条件分支的最佳方法是什么:

if(a && b) return doW();
if (a && !b) return doX();
if(!a && b) return doY();
if(!a && !b) return doZ();

2 个答案:

答案 0 :(得分:3)

稍微不同(但等效)的结构可能更具可读性,具体取决于a / b实际上是什么。您可以避免在ab的所有组合中使用一些嵌套来平坦分支:

if (a) {
  return b ? doW() : doX();
}
else {
  return b ? doY() : doZ();
}

或:

if (a) {
  if (b) doW();
  else doX();
}
else {
  if (b) doY();
  else doZ();
}

我认为条件逻辑在这里是理想的,所以不需要避免if/else逻辑。但是,如果你真的对某种方式感兴趣,那么使用地图这是一个有趣的解决方案:

var map = {
  true: {
    true: doW,
    false: doX
  },
  false: {
    true: doY,
    false: doZ
  }
}

map[a][b]();

答案 1 :(得分:0)

您可以使用对象文字来存储您的函数。

class Diagonal {
    static char [][] colorArray = new char [5][5];
    public static void main(String args[])
    {
        for (int i = 0; i < 5; i++ ) {
            // Even rows, including 0th row
            if ((i%2)==0) {
                // Color in locations with even indexes
                for (int j =0; j < 5; j++ ) {
                    if ((j%2)==0) {
                        colorArray[i][j] = 255;
                    }
                }
            } else { // Odd rows
                for (int j =0; j < 5; j++ ) {
                    // Color in locations with odd indexes
                    if ((j%2)!=0) {
                        colorArray[i][j] = 255;
                    }
                }
            }
        }

    }
}