在日常的编码工作中,随着业务逻辑的复杂性增加以及功能的不断迭代,做code review时经常发现代码中会有大量的if/else结构,这些结构往往会导致代码不够美观,并且if数量级一旦上升代码的可读性也会持续下降。所以作为前端开发,应该如何来优化过多的if/else结构呢?
方式一: 使用三元运算符
对于简单的if/else条件判断,可以直接使用三元运算符来代替
方式二:优化if逻辑
优化目标:最小化的减少判断条件的数量
优化方法:
- 最常见的if条件放在最前方
- 合理整合判断条件,尽可能的把更多相同处理方式的判断条件放在一起
if(num < 100) {
// do something
} else if (num > 100 && num < 1000) {
// do else something
} else {
// do others
}
如上的demo中,如果num最常出现的是大于100小于1000的数字,那每次进入正确的判断体内都要运算两次条件,就应该将其条件放在首位
方式三:合理使用switch/case
switch和if/else在性能上是没有什么较大区别的,主要还是根据各自需求进行分析和选择
- 如果条件数量较少,使用if/else较合适,清晰明了
- 如何条件数量较多,则建议使用switch/case
方式四:多使用hash
例如以下代码
let val = '';
if (key == "apple") {
val = "1";
} else if (key == "banana"){
val = "2";
} else if (key == "orange"){
val = "3";
}
使用hash结构后的代码
const obj = {
apple: 1,
banana: 2,
orange: 3,
}
return obj[type];
方式五:使用面向对象的继承或组合
使用最常见的例子来说明一下
1.如果是狗,则汪汪
2.如果是猫,则喵喵
3.如果是羊,则咩咩
4.如果是鸭,则嘎嘎
改成面向对象利用class
1.定义动物类
2.在原型链上定义其方法:叫
3.定义子类:狗 猫 羊 鸭
4.每个子类可重写原型链上的方法