为了账号安全,请及时绑定邮箱和手机立即绑定

如何优化if...else嵌套

如何优化if...else嵌套

炎炎设计 2019-03-19 17:17:37
if(info.type === 'add') {    cate === 'A' ?        // add A        : cate === 'B' ?        // add B            : null;} else if(info.type === 'update') {    cate === 'A' ?        // update A        : cate === 'B' ?            // update B             : null}类似于这种,外面是用的if...else内部用的是三元表达式,还有清晰的方案吗?对于这种多从判断的嵌套,有没有一种优化的思路呢?
查看完整描述

7 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

switch (cate) {

    case 'a':

        handlerBala(cate, info)

        break;

    case 'b':

        handlerBala(cate, info)

        break;

}


function handlerBala(cate, info) {

    switch (info.type) {

        case 'add':

            add(cate)

            break;

        case 'update':

            update(cate)

            break;

    }

}


查看完整回答
反对 回复 2019-03-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

单独抽象出去写两个方法 一个add 一个update


查看完整回答
反对 回复 2019-03-25
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

cate、type都可扩充的形式,结构清晰。


let obj = {

        A: fn,

        B: fn

    },

    type = {

        'type': 1,

        'update': 1,

        'default': 1

    };


// 通用处理

function fn( t, c ) {

    return t + c;

};


obj[ cate ] && obj[ cate ]( info.type || 'default', cate );


查看完整回答
反对 回复 2019-03-25
?
噜噜哒

TA贡献1784条经验 获得超7个赞

var o={

    add:function(){},

    update:function(){}

}

o[info.type]()


查看完整回答
反对 回复 2019-03-25
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

  var a = {

  add: function () { },

  update: function () { }

}


a[info.type]()


查看完整回答
反对 回复 2019-03-25
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

var o = {

_methods : function(a, u) {

var s = a + '_' + u;

return s in this ? this[s] : null;

}, 

add_A : 'addA',

add_B : 'addB',

update_A : 'updateA',

update_B : 'updateB'

};

o._methods(info.type, cate);


查看完整回答
反对 回复 2019-03-25
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

要说清晰,我觉得还是原来的程序更清晰。楼上诸位你们自己看看你们的程序,只能说减少了代码量,或者减少了逻辑判断相关的语句而已!清晰?呵呵


查看完整回答
反对 回复 2019-03-25
  • 7 回答
  • 0 关注
  • 935 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信