js-ifelse-奇技淫巧

我们有A,B,C,D四个不同的类别,在最开始的时候只有三个类别,并且两个类别是做同样的事:

1 function categoryHandle(category) {
2     if(category !== 'A') {
3       console.log('B, C');
4     } else {
5       console.log('A');
6     }
7 }
1.1

接着,出现了类别D——它与B和C相比来说,有一个不同的任务,而它又和B和C有一个相同的任务。于是,代码变成了这样。

function categoryHandle(category) {
  if(category !== 'A') {
    if(category === 'D') {
      console.log('D');
    } else {
      console.log('B,C');
    }
    console.log('B, C ,D')
  } else {
    console.log('A');
  }
}
1.2

然后

function categoryHandle(category) {
  if(category === 'A') {
    console.log('A');
  } else if (category === 'B'){
    console.log('B');
  } else if (category === 'C'){
    console.log('D');
  }else if (category === 'D'){
    console.log('D');
  }
}
1.3

当然用switch语句来做,但是我真不想这样想。接着,JavaScript的奇技淫巧来完成这个工作:

function categoryHandleRefactor(category) {
  var categoryAction = {
    'A': {
      run: function () {
        console.log('A')
      }
    },
    'B': {
      run: function () {
        console.log('B')
      }
    },
    'C': {
      run: function () {
        console.log('C')
      }
    },
    'D': {
      run: function () {
        console.log('D')
      }
    }
  };
  categoryAction[category].run();
}
1.4

原文地址:https://www.cnblogs.com/CharlieLau/p/5603448.html