逻辑判断代码优化

2019-07-18  本文已影响0人  感觉不错哦
逻辑判断是所有语言的必经之路,别的不说,WEB的兼容处理的逻辑是真的多,如何优化这些逻辑也是一门学问,接下来走一遍我理想中的优化 初学-->入门-->中级(o(╥﹏╥)o高级真的不会)

我想入门的小伙伴肯定写过判断今天是星期几的逻辑判断,就以此为例,我们慢慢升级

    function returnWeekDay(){
        var string='今天是星期'
        var day=new Date().getDay()
        if(date===0){
            string+='日'
        }
        if(date===1){
            string+='一'
        }
        if(date===2){
            string+='二'
        }
        if(date===3){
            string+='三'
        }
        if(date===4){
            string+='四'
        }
        if(date===5){
            string+='五'
        }
        if(date===6){
            string+='六'
        }
        return string
    }

switch也是一样的,就不写了,这是绝大多数新手的判断逻辑。然而有一天相关组织发现,星象有变,每周变成8天(产品的邪恶你是无法想象的),或者逻辑需求增多,需要逻辑判断做出更多的判断,这显然是不好的

    function returnWeekDay(){
        var string='今天是星期'
        var day=new Date().getDay()
        var dateArr=['天','一','二','三','四','五','六']
        return string+dateArr[day]
    }

考虑到结果只有7个,并且date对象返回的num也只有7个,很容易的利用数组进行判断

当然这是在有序的情况,无序如何操作呢,也很简单

    function returnWeekDay(){
        var string='今天是星期'
        var day=new Date().getDay()
        dateObj={
            0:'天',
            1:'一',
            2:'二',
            3:'三',
            4:'四',
            5:'五',
            6:'六',
        }
        return string+dateObj[day]
    }

    function returnWeekDay(){
        var string='今天是星期'
        var day=new Date().getDay()
        var dateObj={}
        for(var i=0;i<7;i++){
            dateObj[i]=i
        }
        return  dateObj
    }

其实这样也可以啊,只需要对value做一些判断即可,比如写一个方法100以内的数学num转换语文num

    function numChar(num){
        var lang = ['','一','二','三','四','五','六','七','八','九','十'];
        var text = '';
        var a = parseInt( num / 10 );
        var b = num % 10;
        if(a > 1){
            text = lang[a]+lang[10]+lang[b];
        }else if(a == 1){
            text = lang[10]+lang[b];
        }else{
            text = lang[b];
        }
        return text;
    }

然后再结合一下上面的 对0判断为7,那么对于逻辑来说总是更严谨的

   function returnWeekDay(){
        var string='今天是星期'
        return  string+'日一二三四五六'.charAt(new Date().getDay())
    }

这时候你的产品来挑事了,加个工休判断

    function returnWeekDay(){
        var string='今天是星期'
        var day=new Date().getDay()
        dateObj={
            0:['天','休'],
            1:['一','工'],
            2:['二','工'],
            3:['三','工'],
            4:['四','工'],
            5:['五','工'],
            6:['六','休'],
        }
        dataType={
            '休':function(){
                console.log('今天休息哦!')
            },
            '工':function(){
                console.log('今天也要努力工作哦!')
            }
        }
        var returnData={
            'string':string+dateObj[day][0],
            'method':dataType[dateObj[day][1]]
        }
        return returnData
    }
三元运算符 适合简单的if(){}else{}
          function num(a){
              if(typeof a=='number'){

              }else{

              }
          }       

          function num(a){
              a=typeof a=='number'?a:b
          }  

b就相当于else

if(flag){
    someMtehod()
}
//可以这样写
flag&&someMtehod()

if(d==a||d==b||d==c){
    someMethod()
}
if([a,b,c].includes(d)){
    someMethod()
}
上一篇下一篇

猜你喜欢

热点阅读