Home  >  Q&A  >  body text

javascript - js减少if语句的技巧

如题,在写代码的时候会遇到各种的判断情况,如果使用if语句的话,会使自己的代码变长而且也不易读。

请问大家在写代码的时候通过什么方法来减少if语句的使用呢?

ringa_leeringa_lee2749 days ago1366

reply all(13)I'll reply

  • 怪我咯

    怪我咯2017-04-11 13:06:40

    以下是我常用的一些if操作改写情况,看看是否对你有帮助。

    • 传统switch改写

    if(result>1 && result<10) {
        return 0
    }elseif(result>10 && result<20){
        return 1
    }else{
        return 10
    }
    // 改动后
    switch(true){
    case (result>1 && result<10):
        return 0
    case (result>10 && result<20):
        return 0
    default:
        return 10
    }
    • 三元运算符替换

    if(bool){
        val = 1
    }else{
        val = 2
    }
    // 改动后
    val = bool ? 1 : 2
    • 逻辑判断改写

    if(bool){
        val = test()
    }
    // 改动后
    bool && (val = test())
    
    if(!bool){
        val = test()
    }
    // 改动后
    bool || (val = test())
    • 对象属性改写

    if(result==1){
        return 'one'
    }elseif(result=2){
        return 'two'
    }elseif(result=3){
        return 'three'
    }else{
        return ''
    }
    // 改动后
    result_info = {1:'one',2:'two',3:'three'}
    return result_info[result] ? result_info[result] : ''

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-11 13:06:40

    • 函数化

    • 短路判断(&& ||)

    • 先处理特殊情况尽早return

    • 三目运算符

    • switch

    • 其他

    个人经常用1和2

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-11 13:06:40

    谢邀。前面已经回答的很好了。方法有很多,具体使用也应视业务而定。
    1.if多的情况下使用switch 代码美观。
    2.减少代码行数:

    三目 condition ? expression1 : expression2;
    &&  result = expression1 && expression2 //如果expression1的计算结果为false,则result为expression1。否则result为expression2
    || data = undefined || backup_data; //一般用于容错,简写if,请求出错,数据为undefined时,就去备用数据backup_data

    3.很多时候业务原因是逃不了用if的,而且它也不错^_^。把代码逻辑简化就可以少if嵌套。至于通用的话,可以考虑设计模式以及函数。

    reply
    0
  • 怪我咯

    怪我咯2017-04-11 13:06:40

    三目运算符,switch都是不错的选择,本人认为,如果需要判断不是很多的话还是使用if即可。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-11 13:06:40

    可以试试策略模式来去if

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-11 13:06:40

    如果使用if语句的话,会使自己的代码变长而且也不易读

    这个描述是不太准确的。对稍微复杂一点的逻辑而言,if在可读性上我感觉是最好的选择。对于一般的简单判断逻辑,&&可以代替if。对于一般的简单if else语句或者多重嵌套但是简单的if else语句,可以用三目运算。你可以看看JQ的源码,里面用if的频率比&&和三目加起来都多。

    另外补充下其他几位朋友提到的通过函数和对象的方式去掉if,针对这个我想说的是,这个本身就不是if的缺点,而是他本身就不该用if来做,就该用过函数或者对象的方式去解决。就好比你非要用铅笔刀削苹果,然后说不能很好的削苹果是铅笔刀的缺点一样。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-11 13:06:40

    出来吧!就决定是你了!三元运算符!

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 13:06:40

    有时候if...else又臭又长是因为没有适当的引入异常处理。
    try...catch

    reply
    0
  • PHP中文网

    PHP中文网2017-04-11 13:06:40

    上面讲了很多的写法,最常见的有三元表达式。我补充些我自己写单个判断时的例子: 1, var i= 5 ;if(i<6) return i; 2, var i= 5 ; i<6 && return i; 说白了有时我不是很喜欢写 { } 这个代码块符号。

    reply
    0
  • 高洛峰

    高洛峰2017-04-11 13:06:40

    如果使用if语句的话,会使自己的代码变长而且也不易读。

    其实我有很多次在被code review的时候,被勒令把三元改成if,理由是三元太不易读了

    reply
    0
  • Cancelreply