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

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

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

												

最新文章

  1. thinkphp分页
  2. 前端开发面试知识点大纲--摘自jackyWHJ
  3. ios之申请后台延时执行和做一个假后台的方法(系统进入长时间后台后,再进入前台部分功能不能实现)
  4. 认识Java虚拟机的内部体系结构、gc示例
  5. 【转】http响应状态代码含义及跳转的类型
  6. python数据的存储和持久化操作
  7. UIDevice 系统信息详解
  8. rabbitMQ入门
  9. python 下的数据结构与算法---8:哈希一下【dict与set的实现】
  10. NYOJ 71 独木舟上的旅行(贪心)
  11. VS下使用Google Protobuf完成SOCKET通信
  12. Struts2的拦截器配置
  13. Ubuntu 16.04 LTS 降级安装GCC 4.8
  14. EL的隐含对象(一)【页面上下文对象】
  15. python-day71--django多表双下划线查询及分组聚合及F/Q查询
  16. PHP网站记录
  17. tp5.1报错 页面错误!请稍后再试
  18. C++中几个值得分析的小问题(1)
  19. WPF数据视图学习
  20. string与wstring互转

热门文章

  1. 31 October
  2. vue键盘修饰符
  3. 移动端调试 — chrome模拟器基础调试
  4. 【MEAN Web开发】CentOS 7 安装MongoDB 3.2.3
  5. springcloud核心组件Eureka、Ribbon、Feign、Hystrix、Zuul
  6. oracle中not in 和 in的代替用法
  7. 校内模拟赛 : Rima —— 字典树+树形DP
  8. 有趣的linux指令
  9. C++学习笔记(一)--基础
  10. HNOI2019fish