多个条件判断的代码优化

70 阅读1分钟

1.直接使用if

let type = 10 ;// 10订单 20发货单 30退货单
let username1 = '张三'
let username2 = '李四'
let date = ""
let mark = ""
if(type == 10) {
    title = "订单"
} else if(type == 20 && username == '张三') {
    title = "发货"
    date = "2022-09-10" //发货日期
} else if(type == 30 && username == '李四') {
    title = "退货"
    mark = "退货10件"
} 

2.使用&& 简化代码

type == 10 && title = "订单"
type == 20 && username == '张三' && title = "发货"
type == 20 && username == '张三' && date = "2022-09-10"
type == 30 && username == '李四' && title = "退货"
type == 30 && username == '李四' && mark = "退货10件"

3. 使用switch(true)

支持复杂判断,并且的业务逻辑内聚

switch(true) {
    case type == 10 : 
        title = "订单"
    break
    case type == 20 && username == '张三': 
        title = "发货"
        date = "2022-09-10"
    break
    case type == 30 && username == '李四': 
        title = "退货"
        mark = "退货10件"
    break
}

4. 使用map key-function

通过map的方式 把关键状态作为key值,逻辑放在key对应的value 里面

let type = 10 ;// 10订单 20发货单 30退货单
let date = ""
let mark = ""
if(type == 10) {
    title = "订单"
} else if(type == 20) {
    title = "发货"
    date = "2022-09-10" //发货日期
} else if(type == 30) {
    title = "退货"
    mark = "退货10件"
} 
const map = {
    10: () => {
        title = "订单"
    },
    20: () => { 
        if(username == '张三') {
            title = "发货"
            date = "2022-09-10"
        }
    },
    30: () => {
        if(username == '李四') {
            title = "退货"
            mark = "退货10件"
        }
    },
}
typeof map[type] == 'function' && map[type]()